C# 插入记录,自动添加日期时间getdate()
我有一个简单的sql insert C#语句,它可以工作!但是,当我为datetime getdate()添加一列时,如果没有空值,insert将失败。我试过看各种各样的文章,但我就是看不懂 这是我的密码C# 插入记录,自动添加日期时间getdate(),c#,sql-server,C#,Sql Server,我有一个简单的sql insert C#语句,它可以工作!但是,当我为datetime getdate()添加一列时,如果没有空值,insert将失败。我试过看各种各样的文章,但我就是看不懂 这是我的密码 string constr = ConfigurationManager.ConnectionStrings[ "My_DatabaseConnectionString"].ConnectionString; using (SqlConnection con =
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管理器添加了一个新的列Date,其中datetime和getdate()允许不选中空值
所以这会将日期和时间添加到任何现有记录中,但当我尝试从表单提交时,它不起作用
错误是:
提供的列名称或值数与表定义不匹配。如果INSERT INTO语句中未提供列列表,则SQL Server要求所有列的值 如果值列表中的值的顺序与 表中的列或中的每一列都没有值 表,列_list必须用于显式指定 存储每个传入值 但是您的查询只提供两列 在“值”部分中为表中的所有列(除标识列(如果使用))添加值
插入TestTable1值(@FirstName、@Email、GETDATE())
或添加插入列的列表,默认值将用于其他列
插入TestTable1(FirstName,Email)值(@FirstName,@Email)
如果INSERT INTO语句中未提供列列表,则SQL Server要求所有列的值
如果值列表中的值的顺序与
表中的列或中的每一列都没有值
表,列_list必须用于显式指定
存储每个传入值
但是您的查询只提供两列
在“值”部分中为表中的所有列(除标识列(如果使用))添加值
插入TestTable1值(@FirstName、@Email、GETDATE())
或添加插入列的列表,默认值将用于其他列
插入TestTable1(FirstName,Email)值(@FirstName,@Email)
使用DateTime.Now获取时间和日期
将其作为参数添加到查询中
您的代码应该是这样的
使用DateTime.Now获取时间和日期
将其作为参数添加到查询中
您的代码应该是这样的
共享引发错误的代码。如果您清楚“with datetime and getdate()allow nulls not checked”是什么意思,那就更好了。不要让我们猜测。至少,在您发送的
插入中提供列名。永远不要让服务器猜你想要什么。@Alejandro告诉你在哪里,根据Fabio的回答。p共享引发错误的代码。如果您清楚“with datetime and getdate()allow nulls not checked”是什么意思,那就更好了。不要让我们猜测。至少,在您发送的插入中提供列名。永远不要让服务器猜你想要什么。@Alejandro告诉你在哪里,根据Fabio的回答。p尝试将日期时间作为字符串传递从来都不是一个好主意。那么,更好的方法是什么?直接传递datetime实例。此外,您假设sql上的GETDATE()函数将返回与System.datetime.Now相同的datetime值。但是,这可能不正确,因为不同计算机上的程序经常使用sql server,因此,该程序很可能运行在与sql server完全不同的时区。尝试将日期时间作为字符串传递从来都不是一个好主意。那么,更好的方法是什么呢?直接传递datetime实例。此外,假设GETDATE()sql上的函数将返回与System.datetime.Now相同的datetime值。但是,这可能不正确,因为sql server通常由不同计算机上的程序使用,因此该程序很可能运行在与sql server完全不同的时区。
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();
}
}