我想在"保存"时尝试将一些信息发送到数据库。单击按钮,但有两种模式,UPDATE和INSERT(用于新条目)。 UPDATE语句工作正常,但INSERT语句总是抛出错误
Public Sub Save_Code()
Dim myCon = New OleDbConnection(My.Settings.Database_Job_RecordsConnectionString)
Dim sqrtext As String
myCon.Open()
If Globals.Note_Add_Mode = False Then
Dim sqr
sqr = New OleDbCommand("UPDATE [Notes] SET [Category] = @Category, [Site] = @Site, [Title] = @Title, [Note] = @Note WHERE [ID] = " & Form1.NOTES_Gridview.CurrentRow.Cells("ID").Value & "", myCon)
sqr.Parameters.AddWithValue("@Category", Form1.NOTE_Category.Text)
sqr.Parameters.AddWithValue("@Site", Form1.NOTE_Site.Text)
sqr.Parameters.AddWithValue("@Title", Form1.NOTE_Title.Text)
sqr.Parameters.AddWithValue("@Note", Form1.NOTE_Note.Rtf)
Dim Command = sqr.ExecuteReader
ElseIf Globals.Note_Add_Mode = True Then
sqrtext = "INSERT INTO [Notes] VALUES ([Category] = @Category, [Site] = @Site, [Title] = @Title, [Note] = @Note)"
Dim sqr As OleDbCommand = New OleDbCommand(sqrtext, myCon)
sqr.Parameters.Add("@Category", OleDbType.VarChar).Value = Form1.NOTE_Category.Text
sqr.Parameters.Add("@Site", OleDbType.VarChar).Value = Form1.NOTE_Site.Text
sqr.Parameters.Add("@Title", OleDbType.VarChar).Value = Form1.NOTE_Title.Text
sqr.Parameters.Add("@Note", OleDbType.VarChar).Value = Form1.NOTE_Note.Rtf
Dim command = sqr.ExecuteNonQuery() 'ERRORS HERE
End If
myCon.Close()
Form1.NOTES_Gridview.DataSource.clear()
Globals.Note_Add_Mode = False
Screen_Starts.Initialise_Screen(6) 'Reset screen and update view
Exit Sub
End Sub
我得到的错误是:
未处理的类型' System.Data.OleDb.OleDbException' 发生在System.Data.dll
中附加信息:查询值和目标字段的数量 不一样。
我还尝试了未命名的参数
sqrtext = "INSERT INTO [Notes] VALUES (?,?,?,?)"
Dim sqr As OleDbCommand = New OleDbCommand(sqrtext, myCon)
sqr.Parameters.Add("@p1", OleDbType.VarChar).Value = Form1.NOTE_Category.Text
sqr.Parameters.Add("@p2", OleDbType.VarChar).Value = Form1.NOTE_Site.Text
sqr.Parameters.Add("@p3", OleDbType.VarChar).Value = Form1.NOTE_Title.Text
sqr.Parameters.Add("@p4", OleDbType.VarChar).Value = Form1.NOTE_Note.Rtf
Dim command = sqr.ExecuteNonQuery() 'ERRORS HERE
但我得到同样的错误。但是,如果我添加
sqr.Parameters.Add("@p1", OleDbType.VarChar).Value = 2
在开头并将@p#
向上移动一个,整个例程成功执行。好像数据库中的自动编号字段没有生成数字或想要传递给它的东西。
我之前从未遇到过这个问题?