注意:请不要关心Connection,因为连接工作正常。
数据库中的字段为DateTime
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Value.Date);
cmd = new SqlCommand("UPDATE LAB_TESTING set Lab_Nam='" + lab_id + "',Rslt_lb='" +
textBox1.Text + "',Tst_Dat='" + dtc + "' Where Lab_ID='" +
bindex + "'", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("You Update recored successfully", "delete", MessageBoxButtons.OK, MessageBoxIcon.Information);
dataGridView1.DataSource = null;
con.Close();
readdatagrid1();
在运行程序后,我从字符串转换日期和/或时间时转换失败。
答案 0 :(得分:1)
不要使用字符串连接来构建查询(SQL injection alert,还有read this!)。使用parameterized queries。至于您的问题:将日期格式设置为# app/views/chalets/show.html.erb
<%= humanize_boolean(chalet.rentable?) %>
(ISO 8601),它会起作用。
如果您已经正确使用了参数化查询,那么您可以按原样传入DateTime,并且驱动程序将确保无论“格式”/语言环境设置/是什么,该值都将正确传递给SQL该值将作为DateTime而不是字符串传递。像这样:
yyyy-MM-dd
除此之外,我还建议将cmd = new SqlCommand(@"UPDATE LAB_TESTING set Lab_Nam = @labnam,
Rslt_lb = @result, Tst_Dat = @tstdat
Where Lab_ID = @id", con);
cmd.Parameters.AddWithValue("@labnam", lab_id );
cmd.Parameters.AddWithValue("@result", textBox1.Text);
cmd.Parameters.AddWithValue("@tstdat", dateTimePicker1.Value.Date);
cmd.Parameters.AddWithValue("@id", bindex);
con.Open();
cmd.ExecuteNonQuery();
和con
包装在cmd
语句中,这样您就可以确保这些内容得到妥善处理,并且您可以提供变量和字段名称体面的名称,并使用一致的命名方案。
现在在我之后重复:
我永远不会再次运行已经串联在一起的查询了!
从现在开始,我将使用参数化查询
如果 我需要再次运行字符串连接查询,我会确保所有值转义正确
重复上述内容,至少50次。
答案 1 :(得分:0)
试试这个
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Value.ToString("dd/MM/yyyy"));
或者
你也可以这样做
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Text)
如果您的SQL代码出现此错误而不是look here
答案 2 :(得分:0)
这对你有用。
var date = (DateTime)dateTimePicker1.SelectedDate.Value;