Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我使用OleDbConnection和OleDbCommand插入记录时不断崩溃_C#_Sql_Winforms_Ms Access_Oledb - Fatal编程技术网

C# 我使用OleDbConnection和OleDbCommand插入记录时不断崩溃

C# 我使用OleDbConnection和OleDbCommand插入记录时不断崩溃,c#,sql,winforms,ms-access,oledb,C#,Sql,Winforms,Ms Access,Oledb,我的数据库是Microsoft Access 2007 下面是字段类型 OleDbConnection conn = new OleDbConnection(connectionString); conn.Open(); cmd = new OleDbCommand(sqlQuery, conn); cmd.CommandText = "INSERT INTO tickets (ProblemIncidentDate, Proble

我的数据库是Microsoft Access 2007

下面是字段类型

        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(); 
我不明白它为什么会崩溃

控制台消息说


System.Data.dll中首次出现类型为“System.Data.OleDb.OledBeException”的异常,请尝试使用以下正确的数据类型

ID                  AutoNumber
ProblemIncidentDate Date/Time
ProblemIncidentTime Date/Time
user                Number
StateTagNumber      Text
ProblemType         Text
ProblemDescription  Memo
ProblemResolution   Memo
ProblemStatus       Text

根据我的评论转换:

尝试在[user]周围放上括号,它可能是关键字。此外,还将字符串传递到整数和日期时间字段中


我与不同的OleDb提供程序合作过,发现有些提供程序不喜欢命名参数,而是使用“?”作为参数的占位符。请注意,参数需要按照与插入相同的顺序添加(就像您所做的那样),因此请尝试更改为

cmd.Parameters.Add("@ProblemDate", OleDbType.Date).Value = DateTime.Parse(labelProblemDate.Text.Trim());

cmd.Parameters.Add("@userIDNumber", OleDbType.Integer).Value = Convert.Int32(userID.ToString());

您得到的错误是什么?当您发布错误时,它会有所帮助。通常,错误消息包含问题所在的提示。请尝试在
[user]
周围放上括号,它可能是关键字。另外,您正在将字符串传递到Integer和DateTime字段中。Lars-您是对的。将[]放在用户周围必须是TimeSpan。检查列表即使修复了数据类型,我仍然崩溃。
insert into YourTable( fld1, fld2, fld3 ) values ( ?, ?, ? )