我想用"Datetime"更新字段数据类型在表我的数据库从DateTimePicker对象在c#
本文关键字:quot 我的 数据库 DateTimePicker 对象 字段 Datetime 更新 数据类型 | 更新日期: 2023-09-27 18:11:12
注意:不关心连接,因为连接工作。数据库中字段为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注入警报,也请阅读此!)。使用参数化查询。至于你的问题:格式化日期为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();
除此之外,我还建议将con
和cmd
包装在using() { ... }
语句中,以便您可以确保这些东西得到正确处理,并且您为变量和字段名提供体面的名称并使用一致的命名方案。
现在跟我读:
我再也不会运行字符串连接在一起的查询了!
从现在开始我将使用参数化查询
- <引用类>
如果我需要再次运行字符串连接查询,我将确保所有值都被转义正确
引用类>
大声重复以上内容,至少50遍。
这将为您工作。
var date = (DateTime)dateTimePicker1.SelectedDate.Value;
试试这个
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Value.ToString("dd/MM/yyyy"));
或
你也可以这样做
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Text)
如果你得到这个错误与你的SQL代码比看看这里