我正在嘗試從 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
我不明白我做錯了什么。
uj5u.com熱心網友回復:
由于 sql 字串和引數不匹配,我選擇了引數并更改了 sql 字串。我不得不猜測資料庫中的表名和欄位名。請檢查正確的名稱。如果欄位是自動編號欄位(通常作為主鍵和 ID 欄位找到),則不要為該欄位插入值。資料庫將為您插入值。
連接和命令都需要處理,因此Using通過在第一行后面放一個逗號并洗掉Dim.
在執行命令之前不要打開連接。
a 的Text屬性TextBox是 a String。您不需要轉換型別。
我用 aWith...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
uj5u.com熱心網友回復:
正如錯誤所述,該列不允許NULL值。而且您沒有在其中插入值。您正在插入這些列:
([InvoiceID]. [Item],[Cost],[Quantity])
其中 (1) 看起來像前兩列之間的拼寫錯誤,而 (2) 甚至與您嘗試插入的值都不相似。
指定要將值插入到的列:
([CustID], [FirstName], [LastName], [Address], [PhoneNo], [Points])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314247.html
上一篇:MSAccess查詢以使用列標題文本填充單元格,其中該列的值=“是”
下一篇:MS訪問兩個表之間的多個關系
