gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:41:51 25 4
gpt4 key购买 nike

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

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

最佳答案

不要使用字符串连接来构建查询(SQL injection alert,还有 read this!)。使用 parameterized queries .至于您的问题:将日期格式设置为 yyyy-MM-dd ( ISO 8601 ) 即可。

如果您正确地使用了参数化查询,您可以按原样传入 DateTime,并且驱动程序将确保该值将正确传递给 SQL,而不管“格式”/区域设置/自从该值将作为 DateTime 而不是字符串传递。像这样:

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

除此之外,我还建议将 concmd 包装在 using() { ... } 语句中,以便您可以确保这些东西得到妥善处理,并且您为变量和字段名提供了合适的名称并使用一致的命名方案。

现在跟着我重复:

  • 我永远不会再运行已被字符串连接在一起的查询!

  • 从现在开始我将使用参数化查询

  • 如果我需要再次运行字符串连接查询,我将确保所有值都被正确转义

大声重复上述内容,至少 50 次。

关于c# - 我想用 C# 中的 DateTimePicker 对象更新数据库表中数据类型为 "Datetime"的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com