我想用"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();

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

我想用"Datetime"更新字段数据类型在表我的数据库从DateTimePicker对象在c#

不要使用字符串连接来构建查询(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();

除此之外,我还建议将concmd包装在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代码比看看这里