我一直在使用OleDbConnection和OleDbCommand插入记录时崩溃
本文关键字:插入 记录 崩溃 OleDbCommand OleDbConnection 我一直在 | 更新日期: 2023-09-27 18:32:25
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
cmd = new OleDbCommand(sqlQuery, conn);
cmd.CommandText = "INSERT INTO tickets (ProblemIncidentDate, ProblemIncidentTime, user, StateTagNumber, ProblemType, ProblemDescription, ProblemStatus) VALUES (@ProblemDate,@ProblemTime,@userIDNumber,@StateTag,@ProblemType,@ProblemDescription,@ProblemStatus)";
cmd.Parameters.Add("@ProblemDate", OleDbType.Date).Value = labelProblemDate.Text.Trim();
cmd.Parameters.Add("@ProblemTime", OleDbType.DBTimeStamp).Value = labelProblemTime.Text.Trim();
cmd.Parameters.Add("@userIDNumber", OleDbType.Integer).Value = Convert.ToInt32(userID.ToString());
cmd.Parameters.Add("@StateTag", OleDbType.VarChar).Value = textBoxStateTagNumber.Text.Trim();
cmd.Parameters.Add("@ProblemType", OleDbType.VarChar).Value = comboBoxProblemType.SelectedItem.ToString();
cmd.Parameters.Add("@ProblemDescription", OleDbType.VarChar).Value = textBoxProblemDescription.Text.Trim();
cmd.Parameters.Add("@ProblemStatus", OleDbType.VarChar).Value = "Open";
cmd.ExecuteNonQuery(); //At this line exception is generating
conn.Close();
我的数据库是 Access 2007 Microsoft
以下是字段类型
ID AutoNumber
ProblemIncidentDate Date/Time
ProblemIncidentTime Date/Time
user Number
StateTagNumber Text
ProblemType Text
ProblemDescription Memo
ProblemResolution Memo
ProblemStatus Text
我不知道为什么它会崩溃
控制台消息显示
System.Data中发生了类型为"System.Data.OleDb.OleDbException"的第一次机会异常.dll
尝试使用正确的数据类型,例如
cmd.Parameters.Add("@ProblemDate", OleDbType.Date).Value = DateTime.Parse(labelProblemDate.Text.Trim());
cmd.Parameters.Add("@userIDNumber", OleDbType.Integer).Value = Convert.Int32(userID.ToString());
从我的评论转换而来:
尝试在 [user] 周围加上括号,它可能是关键字。 此外,您还将字符串传递到"整数"和"日期时间"字段中。
我使用过不同的 OleDb 提供程序,发现有些提供程序不喜欢命名参数,而是只使用 "?" 作为参数的占位符。 请注意,参数需要按照与插入相同的顺序添加(就像您一样),因此请尝试更改为.。
insert into YourTable( fld1, fld2, fld3 ) values ( ?, ?, ? )