[英]How to Retrieve Date and time from SQL to datetimepicker in c#?
[英]C# datetimepicker to date in SQL Server
每当我尝试在C#应用程序中更改DateTimePicker
值时,如果不更改该值,程序都会成功运行,我会遇到异常-有什么想法吗?
例外情况:
System.Data.dll中发生了类型为'System.Data.SqlClient.SqlException'的未处理的异常
附加信息:从字符串转换日期和/或时间时转换失败。
C#代码:
private void button8_Click(object sender, EventArgs e)
{
// SqlConnection cnx = new SqlConnection("Data Source=TDI11-PC\\SQLEXPRESS;Initial Catalog=mjhd;Integrated Security=True");
String req = "insert into dommage_materiel values('" + textBox1.Text +"','" + richTextBox2.Text+ "','" + richTextBox1.Text +"','" + textBox3.Text + "','" +dateTimePicker1.Value+"','" + richTextBox3.Text + "','" + textBox2.Text + "','" + textBox4.Text.ToString()+"','" + textBox5.Text.ToString()+"')";
SqlCommand cmd = new SqlCommand(req, cnx);
cnx.Open();
cmd.ExecuteNonQuery();
cnx.Close();
}
我尝试了这种方法无济于事:
DateTime.Parse(dateTimePicker1.Value.ToString());
Convert.ToDateTime(dateTimePicker1.Value.ToString());
注意:SQL Server列的数据类型为Date
。
为什么不尝试传递参数? 这样,您还可以指定参数类型。 仅举一个例子:
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@dateParamter", SqlDbType.Date);
command.Parameters["@dateParamter"].Value = dateTimePicker1.Value;
您可以在此处阅读有关此内容的更多信息: 如何:执行参数化查询
另外,如上所述的dynamic SQL
易于SQL injection
。 Parameterised SQL
至少是学习如何防止它们的一个很好的起点。
有关更多信息,您可以阅读Jeff Atwood的文章给我参数化的SQL,或者让我死亡
只是借用上述文章的底线:
Parameterised SQL
具有以下纯性能优势:
- 更少的字符串串联
- 无需担心任何类型的手动字符串转义
- 一个更通用的查询形式呈现给db,因此它可能已经散列并存储为预编译的执行计划
- 较小的弦通过电线发送
非参数化SQL是数据库编程的GoTo语句。 不要这样做,并确保您的同事也不要这样做。
希望这可以帮助!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.