Search code examples
c#sqlwinformsms-accessoledb

I keep crashing with Inserting a record using OleDbConnection and OleDbCommand


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

My database is a Microsoft Access 2007

Here are the field types

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

I can't figure out why it's crashing

The console message says

A first chance exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll


Solution

  • Try with the correct datatypes like

    cmd.Parameters.Add("@ProblemDate", OleDbType.Date).Value = DateTime.Parse(labelProblemDate.Text.Trim());
    
    cmd.Parameters.Add("@userIDNumber", OleDbType.Integer).Value = Convert.Int32(userID.ToString());