亲爱的程序员,
我正在使用VB.NET 2008,目前正在尝试将textbox / combobox / datetimepicker值添加到我的Access数据库中,该数据库现已连接到我的应用程序中。
我的表名是Encoding。到目前为止,这是我的代码:
Imports System.Data.OleDb
Public Class frmEncode
Dim strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & System.Environment.CurrentDirectory & "\encoding.accdb"
Dim cnnOLEDB As New OleDbConnection(strConnectionString)
Dim cmdOLEDB As New OleDbCommand
Dim cmd As OleDbCommand
'------------
Private Sub ButtonX7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonX7.Click
Dim InsertQuery As String
InsertQuery = "INSERT INTO Encoding (Client, Address, Date_Bill, Vessel, TIN, Port, Voyage No, Vessel Type, InterPleader1, InterPleader2, Waste Details, Payment, BI#, CSR#, Amount)VALUES(@client, @address, @date, @vess, @tin, @port, @voyno, @vesstype, @intplead1, @intplead2, @waste, @pay, @bi, @csr, @amnt)"
Dim cmd As OleDbCommand = New OleDbCommand(InsertQuery, cnnOLEDB)
cmd.Parameters.AddWithValue("@client", ComboBoxEx1.Text)
cmd.Parameters.AddWithValue("@address", TextBoxX1.Text)
cmd.Parameters.AddWithValue("@date", DateTimePicker1.Text)
cmd.Parameters.AddWithValue("@vess", TextBoxX2.Text)
cmd.Parameters.AddWithValue("@tin", TextBoxX3.Text)
cmd.Parameters.AddWithValue("@port", ComboBoxEx2.Text)
cmd.Parameters.AddWithValue("@voyno", TextBoxX4.Text)
cmd.Parameters.AddWithValue("@vesstype", ComboBoxEx3.Text)
cmd.Parameters.AddWithValue("@intplead1", ComboBoxEx4.Text)
cmd.Parameters.AddWithValue("@intplead2", ComboBoxEx5.Text)
cmd.Parameters.AddWithValue("@waste", ComboBoxEx6.Text)
cmd.Parameters.AddWithValue("@pay", ComboBoxEx7.Text)
cmd.Parameters.AddWithValue("@bi", TextBoxX7.Text)
cmd.Parameters.AddWithValue("@csr", TextBoxX5.Text)
cmd.Parameters.AddWithValue("@amnt", TextBoxX8.Text)
cnnOLEDB.Open()
cmdOLEDB = New OleDbCommand(InsertQuery, cnnOLEDB)
cmd.ExecuteNonQuery()
cnnOLEDB.Close()
frmEncodeDatabase.Show()
End Sub
错误发生在< cmd.ExecuteNonQuery()'中,它表示INSERT INTO语句'中的语法错误。
我不知道System Into语句有什么问题。我应该添加Try / Catch语句吗?在值周围添加引号?或者添加括号??
答案 0 :(得分:1)
您需要将包含空格,特殊字符或关键字的字段名称括起来:
[Voyage No],... [BI#], etc...
数据库中的所有字段都是字符串类型吗?您的所有参数都将传递字符串,因此您应该转换它们,例如日期和数字等值。
答案 1 :(得分:1)
列名中包含无效字符(#和空格),这意味着您需要用括号括起来。例如,Waste Details
需要变为[Waste Details]
,CSR#
需要[CSR#
}。
答案 2 :(得分:0)
您的列名中包含非法字符。删除所有非字母数字字符(例如#
)。