1

我有 C# 程序,它从文本框获取值并使用validate()BindingNavigator 中的保存按钮上的方法将其添加到 sql 数据库

    private void tableBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {           
        this.Validate();
        this.tableTiryaqBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.tiryaqDataSet);           
    }

但我需要添加当前date到日期列而不从DateTimePicker. 日期列不允许null,我试过这段代码

    private void tableBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {           
        this.Validate();

        SqlCommand cmd = new SqlCommand("INSERT INTO Table(date) VALUES(@date)", con);
        con.Open();
        cmd.Parameters.AddWithValue("@date", DateTime.Now);
        cmd.ExecuteNonQuery();
        con.Close();

        this.tableTiryaqBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.tiryaqDataSet);           
    }

但它在日期列上给了我空异常!所以有人知道怎么做吗?

4

4 回答 4

1

如果您有权限,则可以GetDate()在列中添加为默认值。它会自动将当前日期放在日期列中

编辑:

您现在不需要从代码中发送日期,数据库服务器将在插入时在日期列中插入当前日期。如果您无法更改参数列表并且必须发送它,那么您可以将其发送为 null 并声明您的参数@date datetime = NULL

 SqlCommand cmd1 = new SqlCommand("SqlCommand("INSERT INTO Table(date) VALUES('" + DateTime.Now.ToString("yyyy/MM/dd") + "')", con);
于 2012-11-12T11:43:26.193 回答
1

在解决方案资源管理器中按Dataset然后打开旁边的箭头Dataset.Desiner.cs。搜索您想要的列(这里是DATE)并找到该Default Value行。在这里你可以把你的代码像这样

private static System.DateTime columndate_defaultValue = System.DateTime.Now;

你会发现这一行没有defaultValue = System.DateTime.Now;然后你添加它。

于 2012-11-12T17:19:24.890 回答
0

更改数据库表本身并将 GETDATE() 定义为日期列的默认值

于 2012-11-12T11:44:05.363 回答
0

您还可以指定参数的类型:

SqlParameter parameter = cmd.Parameters.Add("@date", System.Data.SqlDbType.DateTime);
parameter.Value = DateTime.Now;
cmd.ExecuteNonQuery();
于 2012-11-12T11:45:43.023 回答