插入记录,自动添加日期时间

本文关键字:添加 日期 时间 记录 插入 | 更新日期: 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();
        }
    }