MrMay
asked on
c# and Access
Can someone please tell me how to save a date into an access database?
Let me explain;
I have a table within an access database. In one table I have a Field "DateofDefect" with data-type of "Date/Time".
In my c# application I have the current date being displayed in a label. How do I save that date into this access database?
here are snips of my code;
label1.Text = DateTime.Today.ToLongDateS tring();
command.CommandText = "Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values ('"+label9.Text+"','"+labe l13.Text+" ','"+label 10.Text+"' ,'"+label1 1.Text+"', '"+label1. Text+"' )";
Let me explain;
I have a table within an access database. In one table I have a Field "DateofDefect" with data-type of "Date/Time".
In my c# application I have the current date being displayed in a label. How do I save that date into this access database?
here are snips of my code;
label1.Text = DateTime.Today.ToLongDateS
command.CommandText = "Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values ('"+label9.Text+"','"+labe
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You removed the apostrophes and replaced with pound signs, correct?
OM Gang
OM Gang
ASKER
yes
ASKER
command.CommandText = "Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values ('"+label9.Text+"','"+labe l13.Text+" ','"+label 10.Text+"' ,'"+label1 1.Text+"', #"+label1. Text+"# )";
ASKER
see attached for error msg.
Capture.JPG
Capture.JPG
I am setting up a test project in VS 2013 with an Access db connection ... but the error message seems to indicate it's a format issue. Try converting/casting the value of label1.Text to ShortDate. Maybe Access doesn't recognize the formatting coming in.
OM Gang
OM Gang
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
you are all correct.. looks like a format issue.
if I do
label1.Text = DateTime.Today.ToLongDateS tring();
It crashes.
but if i change it to
label1.Text = DateTime.Today.ToShortDate String();
it works.
thank you all for your input... :-)
if I do
label1.Text = DateTime.Today.ToLongDateS
It crashes.
but if i change it to
label1.Text = DateTime.Today.ToShortDate
it works.
thank you all for your input... :-)
I prefer to use string.Format when doing string concatenation operations:
-saige-
command.CommandText = string.Format("Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values ('{0}','{1}','{2}','{3}',#{4}#)", label9.Text, label13.Text, label10.Text, label11.Text, label1.Text);
Still others would recommend not using a string literal, but rather a parameter based insert:
command.CommandText = @"Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values (@Line, @Shift, @AreaofConcern, @GlassDefect, @DateofDefect)";
command.Parameters.AddWithValue("@Line", label9.Text);
command.Parameters.AddWithValue("@Shift", label13.Text);
command.Parameters.AddWithValue("@AreaofConcern", label10.Text);
command.Parameters.AddWithValue("@GlassDefect", label11.Text);
command.Parameters.AddWithValue("@DateofDefect", label1.Text);
However, I suspect that your problem could be related to conversion (depending upon if your DateofDefect allows for nulls):
DateTime? temp = new DateTime();
command.CommandText = string.Format("Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values ('{0}','{1}','{2}','{3}',#{4}#)", label9.Text, label13.Text, label10.Text, label11.Text, DateTime.TryParse(label1.Text, temp) ? temp.Value.ToShortDateString() : null);
And for those that recommend parameter based inserts:
DateTime? temp = new DateTime();
command.CommandText = @"Insert into GlassDefectData (Line, Shift, AreaofConcern, GlassDefect, DateofDefect) values (@Line, @Shift, @AreaofConcern, @GlassDefect, @DateofDefect)";
command.Parameters.AddWithValue("@Line", label9.Text);
command.Parameters.AddWithValue("@Shift", label13.Text);
command.Parameters.AddWithValue("@AreaofConcern", label10.Text);
command.Parameters.AddWithValue("@GlassDefect", label11.Text);
command.Parameters.AddWithValue("@DateofDefect", DateTime.TryParse(label1.Text, temp) ? temp.Value.ToShortDateString() : null);
-saige-
ASKER