繁体   English   中英

将日期时间值插入SQL Server数据库

[英]Insert date time value into SQL Server database

我正在尝试将日期时间选择器值插入数据库中的DATETIME列。

这是我的代码。

 myconstr = "Data Source=wind;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
 myquery = "INSERT INTO DateTimeTB(MyDate) VALUES (@mydate)";

 using (SqlConnection connection = new SqlConnection(myconstr))
 {
     SqlCommand cmd = new SqlCommand(myquery);
     cmd.CommandType = CommandType.Text;
     cmd.Connection = connection;
     cmd.Parameters.Add(new SqlParameter("@mydate", SqlDbType.DateTime).Value = MyDTP01.Value);
     connection.Open();
     cmd.ExecuteNonQuery();
     connection.Close();
 }

它给了我以下错误。

SQL参数集合仅接受非null SqlParameter类型的对象,而不接受日期时间对象。

我怎样才能解决这个问题..?

您的代码等效于:

var parameter = new SqlParameter("@mydate", SqlDbType.DateTime);
var value = MyDTP01.Value;
parameter.Value = value;
cmd.Parameters.Add(value);

您要添加参数 ,而不是值。 所以:

cmd.Parameters.Add(new SqlParameter("@mydate", SqlDbType.DateTime)).Value = MyDTP01.Value;

注意括号的位置。

这可以简化,但是-您不需要自己调用SqlParameter构造函数-您可以将名称和类型传递给Add

cmd.Parameters.Add("@mydate", SqlDbType.DateTime).Value = MyDTP01.Value;

使用企业库,这就是我的方法

 var db = EnterpriseLibraryContainer.Current.GetInstance<Database>();
 using( DbCommand command = db.GetStoredProcCommand("Your Stored proc name"))
 {
   db.AddInParameter(command, "@mydate", DbType.DateTime, DateTime.Now.Date); // Replace with MyDTP01.Value
   db.ExecuteNonQuery(command);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM