C# 我想用“更新”字段;日期时间“;C中DateTimePicker对象的数据库表中的数据类型#
注意:不要在意连接,因为连接工作正常。 数据库中的字段是C# 我想用“更新”字段;日期时间“;C中DateTimePicker对象的数据库表中的数据类型#,c#,sql,datetime,C#,Sql,Datetime,注意:不要在意连接,因为连接工作正常。 数据库中的字段是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 + "' Whe
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 dtc = Convert.ToDateTime(dateTimePicker1.Value.ToString("dd/MM/yyyy"));
否则
你也可以这样做
DateTime dtc = Convert.ToDateTime(dateTimePicker1.Text)
如果您的SQL代码出现此错误,则使用将对您有效
var date = (DateTime)dateTimePicker1.SelectedDate.Value;
不要使用字符串连接来构建查询(,也!)。使用。至于您的问题:将日期格式化为
yyyy-MM-dd
(),它就可以工作了
如果正确使用参数化查询,则可以按原样传递日期时间,并且驱动程序将确保该值正确传递给SQL,而不管“格式”/“区域设置”如何,因为该值将作为日期时间而不是字符串传递。大概是这样的:
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次。我使用了您上面提出的两种代码,但都不起作用,还收到消息“从字符串转换日期和/或时间时转换失败”。让我们试试这个
DateTime.ParseExact(dateTimePicker1.Text)
DateTime dtc=Convert.ToDateTime(…)line或其他地方不使用特定于区域设置的格式;世界上大多数国家使用dd-MM-yyyy。将始终有效。此日期时间也不起作用。ParseExact(dateTimePicker1.Text)也有此代码DateTime dtc=Convert.ToDateTime(…)最初出现在我的代码中,但不起作用。dosent起作用,因为在(Date)和SelectedDate下有红线。我已将(Date)更改为(DateTime),请尝试。拒绝“AddWithValue”因为它的线下是红色的。线下是红色的
。。。再次:告诉我们确切的错误。“红线”可以是任何东西。“错误”窗口(或将鼠标悬停在带下划线的代码上)将显示实际错误。另外请注意,我写了上面的代码作为示例。您可能需要根据自己的需要进行更改,或者。。。我不知道。。。可能参考以进行更改?错误是“不定义AddWithValue”可能我没有解释好,因为我刚从C#开始,并且我面临日期时间问题。