【发布时间】: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 参数。 -
如何获取数组的大小