插入记录,自动添加datetime getdate()

tuv*_*boy 0 c# sql-server

我有一个简单的sql insert C#语句,有效!但是,当我为datetime getdate()添加一列时,没有空值,插入失败.我试过并查看了各种文章,但我无法得到它.

这是我的代码!

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,所以我使用SQL Server管理器添加一个新列Date,datetime和getdate()允许空值未选中.

所以这会为任何现有记录添加日期和时间,但是当我尝试从表单提交时,它不起作用.

错误是:列名或提供的值数与表定义不匹配.

Fab*_*bio 5

如果INSERT INTO语句中未提供列的列表,则SQL Server期望所有列的值

来自MSDN

如果"值"列表中的值与表中的列的顺序不同,或者表中的每列没有值,则必须使用column_list显式指定存储每个传入值的列.

但是您的查询只提供两列

在VALUES部分中为表中的所有列添加值(如果使用,则为IDENTITY列除外)

INSERT INTO TestTable1 VALUES (@FirstName, @Email, GETDATE())
Run Code Online (Sandbox Code Playgroud)

或添加插入列的列表,默认值将用于其他列

INSERT INTO TestTable1 (FirstName, Email) VALUES (@FirstName, @Email)
Run Code Online (Sandbox Code Playgroud)