gpt4 book ai didi

database - “列 'CustID' 不允许为空。”尝试写入 Access 数据库 VB.net 时出错

转载 作者:行者123 更新时间:2023-12-02 18:31:39 25 4
gpt4 key购买 nike

我正在尝试以 VB 形式从文本框写入数据库。但是,当我单击“添加”按钮时,即使我的所有文本框都已填写,“CustomersBindingSource.EndEdit() 行下也会出现此错误。

Using connection As New OleDbConnection(builder.ConnectionString)

connection.Open()

Dim str As String
str = "Insert into Items([InvoiceID]. [Item],[Cost],[Quantity]) Values (?,?,?,?,?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, connection)
cmd.Parameters.Add(New OleDbParameter("CustID", CType(CustIDTextBox.Text, String)))
cmd.Parameters.Add(New OleDbParameter("FirstName", CType(First_NameTextBox.Text, String)))
cmd.Parameters.Add(New OleDbParameter("LastName", CType(Last_NameTextBox.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Address", CType(AddressTextBox.Text, String)))
cmd.Parameters.Add(New OleDbParameter("PhoneNo", CType(Phone_noTextBox.Text, String)))
cmd.Parameters.Add(New OleDbParameter("Points", CType(PointsTextBox.Text, String)))

CustomersBindingSource.AddNew()
CustomersBindingSource.EndEdit()
CustomersTableAdapter.Update(POS_database_latestDataSet.Customers)

End Using

我不明白我做错了什么。

最佳答案

由于 sql 字符串和参数不匹配,我选择了参数并更改了 sql 字符串。我必须猜测数据库中的表名和字段名。请检查名称是否正确。如果字段是自动编号字段(通常作为主键和 ID 字段),则无需为该字段插入值。数据库将为您插入该值。

连接和命令都需要处理,因此通过在第一行后添加逗号并删除 Dim 来将命令包含在 Using block 中。

在执行命令之前不要打开连接。

TextBoxText 属性是一个 String。您不需要转换类型。

我使用了 With...End With 来避免一点困惑。

OleDb中,参数在sql字符串中出现的顺序必须与它们添加到参数集合中的顺序相匹配。 Add 方法将创建一个新的 Parameter 对象并将其添加到参数集合中。我必须猜测数据类型。检查您的数据库。

你写了所有可爱的命令代码,然后你完全忽略了它。执行该命令将更新数据库。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim str = "Insert into Customers(FirsName, LastName, Address, PhoneNo, Points) Values (@FirstName, @LastName, @Address, @PhoneNo, @Points);"
Using connection As New OleDbConnection(builder.ConnectionString),
cmd As OleDbCommand = New OleDbCommand(str, connection)
With cmd.Parameters
.Add("@FirstName", OleDbType.VarWChar).Value = First_NameTextBox.Text
.Add("@LastName", OleDbType.VarWChar).Value = Last_NameTextBox.Text
.Add("@Address", OleDbType.VarWChar).Value = AddressTextBox.Text
.Add("@PhoneNo", OleDbType.VarWChar).Value = Phone_noTextBox.Text
.Add("@Points", OleDbType.Integer).Value = CInt(PointsTextBox.Text)
End With
connection.Open()
cmd.ExecuteNonQuery()
End Using
End Sub

关于database - “列 'CustID' 不允许为空。”尝试写入 Access 数据库 VB.net 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69328457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com