在SQL Server数据库中插入日期时间值
本文关键字:日期 时间 插入 SQL Server 数据库 | 更新日期: 2023-09-27 18:15:26
我试图将日期时间选择器值插入到我的数据库中的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参数集合只接受非空的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);
}