1

validate()textBoxesから値を取得し、BindingNavigatorの保存ボタンのメソッドを使用してSQLデータベースに追加するC#プログラムがあります

    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);           
    }

しかし、それは私に日付列でnull例外を与えます!! だから誰もがそれを行う方法を知っていますか?

4

4 に答える 4

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 に答える
1

権限がある場合はGetDate()、列にデフォルト値として追加できます。日付列に現在の日付が自動的に挿入されます

編集:

コードから日付を送信する必要はありません。DB サーバーは、挿入時に日付列に現在の日付を挿入します。パラメータリストを変更できず、それを送信する必要がある場合は、それを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 に答える
0

DB テーブル自体を変更し、日付列のデフォルト値として 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 に答える