1

smalldatetime(DB)フィールド値をc#で挿入したいので、このコードを使用しました

 dataAdapter.InsertCommand = new SqlCommand("INSERT INTO journal_jour (id_emp, date, montant_acompte, heur_travaille, Absence) VALUES        (" + comboBox1.SelectedValue + "," + dateTimePicker1.Value.Date.ToShortDateString() + "," + textBox2.Text.Trim() + "," + textBox1.Text.Trim() + "," + ch + ")"
        , con);

しかし、DBのフィールドは常にデフォルト値で埋められます:01/01/1900 00:00:00、私がその値をチェックするためにブレークポイントを使用したとき、それはうまくいきました、例えば今日のその値は '22 /04/です2012'そしてよろしくお願いします。

4

2 に答える 2

2

フィールドがデータベースの DateTime 型であると仮定すると、次のことができます。テーブルに日付を挿入するためのものです。SQL では常にパラメーターを使用する必要があります

SqlCommand cmd = new SqlCommand("INSERT INTO <table> (<column>) VALUES (@value)", connection);
cmd.Parameters.AddWithValue("@value", DateTime.Parse(dateTimePicker1.Value.Date.ToShortDateString()));
cmd.ExecuteNonQuery();
于 2012-04-22T14:35:48.857 に答える
0

SqlParameters を使用します。2 つの結果が得られます。
- SQL インジェクション攻撃を防ぐ
- データ型ごとの区切り文字を気にする必要がない

string queryText = "INSERT INTO journal_jour " +    
                   "(id_emp, date, montant_acompte, heur_travaille, Absence) " +   
                   "VALUES (@id_emp, @dtValue, @montant, @heur,@absence)";   

dataAdapter.InsertCommand = new SqlCommand(queryText, con);
dataAdapter.InsertCommand.Parameters.AddWithValue("@id_emp",comboBox1.SelectedValue);
dataAdapter.InsertCommand.Parameters.AddWithValue("@dtValue",dateTimePicker1.Value.Date);
dataAdapter.InsertCommand.Parameters.AddWithValue("@montant",textBox2.Text.Trim());
dataAdapter.InsertCommand.Parameters.AddWithValue("@heur",textBox1.Text.Trim());
dataAdapter.InsertCommand.Parameters.AddWithValue("@absence",ch);
于 2012-04-22T14:35:23.040 に答える