我想用" Datetime"更新字段来自C#中DateTimePicker对象的数据库表中的数据类型

时间:2015-09-04 06:23:26

标签: c# sql datetime

注意:请不要关心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();

在运行程序后,我从字符串转换日期和/或时间时转换失败。

3 个答案:

答案 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;