Reputation: 35
The connection works fine.I am just facing problem in this portion. My design view of RECORD table is as follows:
Name Type Size
RecordID Long Integer 4
BatchID Long Integer 4
ProcessID Long Integer 4
EmployeeID Long Integer 4
Start Date With Time 8
End Date With Time 8
Status Yes/No 1
Hour Long Integer
Here is my code:
protected void btnSave_Click(object sender, EventArgs e)
{
DateTime a = new DateTime(cldStart.SelectedDate.Year,cldStart.SelectedDate.Month,cldStart.SelectedDate.Day,Convert.ToInt32(ddlStartHour.SelectedValue),Convert.ToInt32(ddlStartMinute.SelectedValue),00);
DateTime b = new DateTime(cldEnd.SelectedDate.Year, cldEnd.SelectedDate.Month, cldEnd.SelectedDate.Day, Convert.ToInt32(ddlEndHour.SelectedValue), Convert.ToInt32(ddlEndMinute.SelectedValue), 00);
TimeSpan c = b-a;
//insert into record table
using (OleDbConnection con = new OleDbConnection(conString))
{
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO RECORD (BatchID,ProcessID,EmployeeID,Start,End,Status,Hour) VALUES (@batchid,@processid,@employeeid,@start,@end,@status,@hours)";
cmd.Parameters.AddWithValue("@batchid", Convert.ToInt32(ddlBatchNo.SelectedValue));
cmd.Parameters.AddWithValue("@processid", Convert.ToInt32(ddlSubCategory.SelectedValue));
cmd.Parameters.AddWithValue("@employeeid", Convert.ToInt32(ddlEmployeeId.SelectedValue));
cmd.Parameters.AddWithValue("@start",a.ToString() );
cmd.Parameters.AddWithValue("@end", b.ToString());
cmd.Parameters.AddWithValue("@hours", c.ToString());
cmd.Parameters.AddWithValue("@status",chboxStatus.Checked);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
txtRemark.Text = "wrong";
}
}
}
I am trying to insert into record table but it shows me
"syntax error in InSERT into command".
Don't know what is wrong.
Upvotes: 2
Views: 90
Reputation: 1438
Start,End,Status,Hour
field names are keywords. change them to [Start],[End],[Status],[Hour]
or either change field names in Database
Upvotes: 2
Reputation: 14604
Your column names are keyword like end,hour
so you need to surround it in braces
cmd.CommandText = "INSERT INTO RECORD (BatchID,ProcessID,EmployeeID,Start,[End],Status,[Hour]) VALUES (@batchid,@processid,@employeeid,@start,@end,@status,@hours)";
Upvotes: 3
Reputation: 18127
OleDbCommand
doesn't have the concept of names parameters so you must define the parameters in the same order as in your query.
cmd.Parameters.AddWithValue("@hours", c.ToString());
cmd.Parameters.AddWithValue("@status",chboxStatus.Checked);
So you should have
cmd.Parameters.AddWithValue("@status",chboxStatus.Checked);
cmd.Parameters.AddWithValue("@hours", c.ToString());
But in your query the status is before hours. Also fix your reserved words like others mention it.
Upvotes: 4
Reputation: 5525
You're table name is the same as the record keyword
Try wrapping it in brackets
protected void btnSave_Click(object sender, EventArgs e) {
DateTime a = new DateTime(cldStart.SelectedDate.Year,cldStart.SelectedDate.Month,cldStart.SelectedDate.Day,Convert.ToInt32(ddlStartHour.SelectedValue),Convert.ToInt32(ddlStartMinute.SelectedValue),00);
DateTime b = new DateTime(cldEnd.SelectedDate.Year, cldEnd.SelectedDate.Month, cldEnd.SelectedDate.Day, Convert.ToInt32(ddlEndHour.SelectedValue), Convert.ToInt32(ddlEndMinute.SelectedValue), 00);
TimeSpan c = b-a;
//insert into record table
using (OleDbConnection con = new OleDbConnection(conString))
{
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO [RECORD] (BatchID,ProcessID,EmployeeID,Start,End,Status,Hour) VALUES (@batchid,@processid,@employeeid,@start,@end,@status,@hours)";
cmd.Parameters.AddWithValue("@batchid", Convert.ToInt32(ddlBatchNo.SelectedValue));
cmd.Parameters.AddWithValue("@processid", Convert.ToInt32(ddlSubCategory.SelectedValue));
cmd.Parameters.AddWithValue("@employeeid", Convert.ToInt32(ddlEmployeeId.SelectedValue));
cmd.Parameters.AddWithValue("@start",a.ToString() );
cmd.Parameters.AddWithValue("@end", b.ToString());
cmd.Parameters.AddWithValue("@hours", c.ToString());
cmd.Parameters.AddWithValue("@status",chboxStatus.Checked);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
txtRemark.Text = "wrong";
}
}
}
Upvotes: 0