当前位置:  开发笔记 > 编程语言 > 正文

如何以特定格式将日期和时间插入SQL Server数据库?

如何解决《如何以特定格式将日期和时间插入SQLServer数据库?》经验,为你挑选了1个好方法。

我在C#中使用Windows窗体.

我试图填写包含DateTime列的SQL Server数据库中的表.

现在当我的PC的时钟格式是dd-MM-yyyy,当我尝试使用以下查询插入数据时,我收到一个错误

将varchar数据类型转换为日期时间数据类型会导致超出范围的值

码:

 SqlConnection cn = new SqlConnection("Data Source=PCN11-TOSH;Initial Catalog=mydb;Integrated Security=True");
 cn.Open();

 SqlCommand cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime, address ) values ('" 
                  + textBox1.Text + "','" + textBox2.Text + "', '"+  DateTime.Now  +"' ,'" 
                  + textBox3.Text + "')");

 cm.Connection = cn;
 cm.ExecuteNonQuery();
 cn.Close();

但是当我改变我的PC的时钟格式时yyyy-MM-dd它工作正常.似乎SQL Server只接受yyyy-MM-dd格式.

我的问题是:如何DateTime根据我的PC时钟格式(dd-MM-yyyy)插入SQL Server列?

谢谢



1> Andy Korneye..:

而不是连接您的sql命令文本,使用参数化查询.

它不仅可以保护您免受sql注入,而且还使用强类型参数(例如,参数应该具有SqlDbType.DateTime传递日期时间值的类型),因此问题将消失.

var cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime) values (@OrderNumber, @Phone, @DateTime)");
cm.Parameters.Add("@OrderNumber", SqlDbType.VarChar);
cm.Parameters["@OrderNumber"].Value = textBox1.Text;
cm.Parameters.Add("@Phone", SqlDbType.VarChar);
cm.Parameters["@phone"].Value = textBox2.Text;
cm.Parameters.Add("@DateTime", SqlDbType.DateTime);
cm.Parameters["@DateTime"].Value = DateTime.Now;

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有