sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半相关的知识,希望对你有一定的参考价值。

其中插入的数据前部分为英文后边部分为俄语,但是俄语查询不出来,数据库服务器在俄罗斯。
谢谢了啊,很着急。。。。
其中字段长度的问题排除,不可能是这个问题

参考技术A 看看字段长度,是不是被自动截断了追问

我将字段长度设置的足够大了,不可能是这个问题

追答

那请问数据库里面存放的是完整的么?

参考技术B 字段类型是否为nvarchar? 你在sql中执行select 这个数据 能返回俄语吗?或者你可以试一试
select N ' 字符串 '

INSERT 查询正在执行但未插入

【中文标题】INSERT 查询正在执行但未插入【英文标题】:INSERT query is executing but not inserting 【发布时间】:2016-08-02 08:38:13 【问题描述】:

我的代码中有以下子例程,用于将新记录插入 SQL Server 数据库。单步执行后,代码全部执行,出现消息框,但该行并未实际插入数据库。我知道它使用了正确的连接,因为我可以查看我使用 SQL Server 手动插入的相关网格上的记录,并且我的 UPDATEDELETE 查询使用相同的连接工作,所以我的代码有问题但是我不知道什么...有人可以帮助我吗?

 Public Shared Function SaveNewIncident(ByVal clientName As String, dateStart As Date, dateEnd As Date, ByVal incidentProblem As String, ByVal timeStart As String, ByVal timeEnd As String,
                                       ByVal incidentSolved As Boolean, ByVal incidentSolution As String, _con As OleDbConnection)

    Dim tr As OleDbTransaction = Nothing

    Try
        tr = _Con.BeginTransaction()

        Dim Dc As New OleDbCommand
        Dc.Connection = _con

        Dim ID As Integer
        ID = "1"

        Dc.CommandType = CommandType.Text
        Dc.CommandText = "INSERT INTO dbo.tblIncidents VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"
        Dc.Transaction = tr
        Dc.Parameters.Add("@supportID", OleDbType.Integer).Value = ID
        Dc.Parameters.Add("@clientName", OleDbType.VarChar).Value = clientName
        Dc.Parameters.Add("@dateStart", OleDbType.Date).Value = dateStart
        Dc.Parameters.Add("@dateEnd", OleDbType.Date).Value = dateEnd
        Dc.Parameters.Add("@incidentProblem", OleDbType.LongVarChar).Value = incidentProblem
        Dc.Parameters.Add("@timeStart", OleDbType.VarChar).Value = timeStart
        Dc.Parameters.Add("@timeEnd", OleDbType.VarChar).Value = timeEnd
        Dc.Parameters.Add("@incidentSolved", OleDbType.Boolean).Value = incidentSolved
        Dc.Parameters.Add("@incidentSolution", OleDbType.LongVarChar).Value = incidentSolution

        tr.Commit()

        MsgBox("Save successful")

    Catch ex As Exception

        mdInit.errorLog(ex.Message, ex.StackTrace)
        MsgBox("Failed to save data, refer to error log")
        tr.Rollback()

    End Try

End Function

【问题讨论】:

我认为你需要在tr.Commit()之前致电Dc.ExecuteNonQuery() @user5226582 是的,谢谢,当然……只是一些愚蠢的事情 【参考方案1】:

您尚未执行插入查询。在tr.Commit()之前添加以下代码

Dc.ExecuteNonQuery()

【讨论】:

感谢 Akshey,这已经奏效了。我想更改的一件事是,在此代码中,supportID 始终输入为 1...我如何调整代码以找到数据库中的最高 ID 号,将其加 1,然后插入此号码? 将 support-id 列转换为标识列。这样,您将始终获得所需的值。 我最初有这个,但是程序中有一点我需要关闭它,因为我必须插入显式值 当您想在标识列中插入显式值时,您可以为该表启用标识列插入

以上是关于sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver数据库中的字段是bit类型的,数据库中查询查询出来的值为啥是true,o查询不出来

sqlserver2000,为啥执行时很慢?仅仅是300条数据。求大神帮助

为啥网页的iframe插入网页后显示不出来

sqlserver查询很慢、而且超时为啥?

为啥我从Access数据库输出来的时间插入到SQL server 数据库后 2015.08.30 01:33:45 时间01就变1了

为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?