我已经做了好几天了,任何帮助都会很棒。我试图使用VB.NET和访问数据库将信息插入数据库。目前我遇到了2个问题。第一个问题是我的数据库中有一个备忘录字段(响应),如果我尝试在该字段中插入超过250个字符,我会收到一条错误消息,表明我的条目很长。我遇到的另一个问题是,如果我在运行程序时尝试多次执行此代码,则会收到错误消息“条件表达式中的数据类型不匹配...”。最后一个问题是数据类型不匹配的问题。
这是有问题的代码
con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\Backends\IncidentReport.mdb")
con.Open()
comStr = "INSERT INTO tblIncidentCommonItemsInfo(recid, Location, DescOrTypeInjIfOther, DateOf, TimeOf, TypeIncident, Doctor, " &
"DateDocNotified, TimeDocNotified, DateRespPartyNotified, RespPartyNotified, " &
" TimeRespPartyNotified, StateNotified, DateStateNotified, TimeStateNotified, Response) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
cmd = New OleDbCommand(comStr, con)
cmd.Parameters.AddWithValue("@p1", IDLabel.Text)
cmd.Parameters.AddWithValue("@p2", LocTextBox.Text)
cmd.Parameters.AddWithValue("@p3", DescTextBox.Text)
cmd.Parameters.AddWithValue("@p4", DateOfTextBox.Text)
cmd.Parameters.AddWithValue("@p5", TimeOfTextBox.Text)
cmd.Parameters.AddWithValue("@p6", TypeTextBox.Text)
cmd.Parameters.AddWithValue("@p7", DocComboBox.SelectedItem)
cmd.Parameters.AddWithValue("@p8", DocDayDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p9", DocTimeDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p10", FamilyDayDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p11", RespPtyTextBox.Text)
cmd.Parameters.AddWithValue("@p12", FamilyTimeDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p13", IDPHYesNoComboBox.SelectedItem)
cmd.Parameters.AddWithValue("@p14", IDPHDayDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p15", IDPHTimeDateTimePicker.Value)
cmd.Parameters.AddWithValue("@p16", ResidentWordsRichTextBox.Text)
Try
cmd.ExecuteNonQuery()
MsgBox("Incident Saved")
Catch ex As Exception
MessageBox.Show(ex.Message & " - " & ex.Source)
End Try
SavedTextBox.Text = "Yes"
con.Close()
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
对于大小问题,您可以尝试准确指定要通过参数传递的值的类型。我怀疑使用AddWithValue将使用更短的参数大小
cmd.Parameters.Add("@p16", OleDbType.LongVarWChar).Value = ResidentWordsRichTextBox.Text)
Data type mismatch in criteria expression
错误可能是由同一问题引起的
AddWithValue方法确定Parameter DataType,查看您传递的值的类型。
在您的代码中,您已经为看起来不同类型的字段传递了Text。例如,recid
似乎是一个整数(数字)字段,但AddWithValue使用的是一个字符串textbox.text。你真的应该应用Convert.ToInt32(IDLabel.Text)
,并且应该对于潜在的DateTime字段进行相同的检查