插入记录,自动添加日期时间
本文关键字:添加 日期 时间 记录 插入 | 更新日期: 2023-09-27 17:53:49
我有一个简单的sql插入c#语句,这是有效的!但是,当我为datetime getdate()添加一个列时,没有null,插入失败。我试过了,也看了很多文章,但就是不懂。
这是我的代码!
string constr = ConfigurationManager.ConnectionStrings[
"My_DatabaseConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(
"INSERT INTO TestTable1 VALUES(@FirstName, @Email)"))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@FirstName", user.FirstName);
cmd.Parameters.AddWithValue("@Email", user.Email);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
这个工作,所以我添加一个新的列日期使用SQL Server管理器,与datetime和getdate()允许null不检查。
所以这添加日期和时间到任何现有的记录,但当我尝试从表单提交,它不工作。
错误是:列名或所提供值的数量与表定义不匹配。
如果在INSERT INTO语句中没有提供列列表,SQL Server期望所有列的值
从MSDN如果Value列表中的值与表中的每个列都没有值表中,column_list必须用于显式指定列存储每个传入值。
但是你的查询只提供了两列
在values部分为表中所有列(如果使用IDENTITY列除外)添加值
INSERT INTO TestTable1 VALUES (@FirstName, @Email, GETDATE())
或添加插入列的列表,其他列将使用默认值
INSERT INTO TestTable1 (FirstName, Email) VALUES (@FirstName, @Email)
使用DateTime.Now获取时间和日期。
System.DateTime.Now.ToShortDateString();
将其作为查询参数添加
你的代码应该是这样的。
string constr = ConfigurationManager.ConnectionStrings["My_DatabaseConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO TestTable1 VALUES (@FirstName,@Email,@DateTime)"))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@FirstName", user.FirstName);
cmd.Parameters.AddWithValue("@Email", user.Email);
cmd.Parameters.AddWithValue("@DateTime",System.DateTime.Now);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}