1
        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(); 

私のデータベースはMicrosoftAccess2007です

フィールドタイプは次のとおりです

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

なぜクラッシュするのか理解できません

コンソールメッセージには

タイプ'System.Data.OleDb.OleDbException'の最初のチャンスの例外がSystem.Data.dllで発生しました

4

3 に答える 3

1

次のような正しいデータ型で試してください

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

cmd.Parameters.Add("@userIDNumber", OleDbType.Integer).Value = Convert.Int32(userID.ToString());
于 2012-04-26T16:19:31.060 に答える
1

私のコメントから変換:

[user]を角かっこで囲んでみてください。キーワードの可能性があります。また、IntegerフィールドとDateTimeフィールドに文字列を渡します。

于 2012-04-26T16:31:29.730 に答える
0

さまざまなOleDbプロバイダーを使用して作業しましたが、名前付きパラメーターが気に入らないプロバイダーがあり、代わりに「?」を使用していることがわかりました。パラメータのプレースホルダーとして。パラメータは挿入と同じ順序で追加する必要があることに注意してください(あなたが持っているのと同じように)ので、に変更してみてください。

insert into YourTable( fld1, fld2, fld3 ) values ( ?, ?, ? )
于 2012-04-26T16:35:58.933 に答える