【问题标题】:Statement Terminated Because Data Will Be Trunucated语句终止,因为数据将被截断
【发布时间】:2020-04-26 17:07:54
【问题描述】:

当我尝试更新数据库中的记录时,我随时都会遇到错误 它表示语句被终止,因为数据将被截断 请帮忙

            Dim command As SqlClient.SqlCommand = con.CreateCommand()
            command.CommandText = "UPDATE staff SET  staff_pic=@staff_pic,fullname=@fullname,dob=@dob,gender=@gender,nationality=@nationality,hometown=@hometown,religion=@religion,tel=@tel,address=@address,position=@position,qualification=@qual WHERE Staff_ID=@ID"
            Dim mem As New MemoryStream
            staff_pic.Image.Save(mem, staff_pic.Image.RawFormat)
            command.Parameters.Add("@ID", SqlDbType.VarChar).Value = staff_id.Text
            command.Parameters.Add("@staff_pic", SqlDbType.Image).Value = mem.ToArray()
            command.Parameters.Add("@dob", SqlDbType.Date).Value = staff_dob.Text
            command.Parameters.Add("@fullname", SqlDbType.VarChar).Value = staff_lname.Text
            command.Parameters.Add("@gender", SqlDbType.VarChar).Value = staff_gender.SelectedItem
            command.Parameters.Add("@nationality", SqlDbType.VarChar).Value = staff_nationality.Text
            command.Parameters.Add("@hometown", SqlDbType.VarChar).Value = staff_hometown.Text
            command.Parameters.Add("@religion", SqlDbType.VarChar).Value = staff_religion.Text
            command.Parameters.Add("@tel", SqlDbType.VarChar).Value = staff_phone.Text
            command.Parameters.Add("@address", SqlDbType.VarChar).Value = staff_address.Text
            command.Parameters.Add("@position", SqlDbType.VarChar).Value = staff_position.SelectedItem
            command.Parameters.Add("@qual", SqlDbType.VarChar).Value = qual.SelectedItem


            If command.ExecuteNonQuery() > 0 Then
                MsgBox("info inserted")
            Else
                MsgBox("info hasnt been inserted")
            End If
            con.Close()

【问题讨论】:

  • 感谢使用参数!检查列中字符串的长度以及它们与您要插入的数据的比较情况。
  • 请解释一下。在代码中你使用 Sql Server 的库,但在标签中你有 MySql。什么是正确的?
  • @BlackDante101 对于SqlDbType.VarChar 参数,您可以为其指定数据库中列的大小。对于SqlDbType.Image 参数,给它数组的大小。
  • @BlackDante101 哦,对于 SqlDbType.Date 参数,您应该将文本解析为值的日期 - 或者如果它来自 DateTimePicker,那么您可以使用 .Value 代替.Text 参数。
  • 如何获取数组的大小

标签: mysql sql vb.net


【解决方案1】:

当您插入大于数据类型长度限制的数据时会发生这种情况。 您可以更改表格并向达到最大值的列添加更大的数字,或者限制您的输入以适合您的列大小。 干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 2018-03-28
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多