Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想用“更新”字段;日期时间“;C中DateTimePicker对象的数据库表中的数据类型#_C#_Sql_Datetime - Fatal编程技术网

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#开始,并且我面临日期时间问题。