2

datepicker から ms sql データベースにデータを保存する際に問題が発生しています。MSSQL の列が [datetime] に設定されています。このコードはありますが、日付/時刻を正しい形式に変換できないため、保存中にエラーが発生します。手伝って頂けますか。ありがとうございました。

エラー: 文字列から日付や時刻を変換するときに変換に失敗しました。

protected void RadButton1_Click(object sender, EventArgs e)
{
            string CS = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
            using (SqlConnection con = new SqlConnection(CS))
            {

                string str = "insert into Leave_Application values(@Badge_Number, @Name, @Section, @Position, @Date_Hired, @Leave_Type, @Date_From, @Date_To, @Time_From, @Time_To, @Reason, '0', getdate(), 'NULL', ' ' )";
                con.Open();
                cmd = new SqlCommand(str, con);

                cmd.Parameters.AddWithValue("@Badge_Number", lblBadgeNo.Text);
                cmd.Parameters.AddWithValue("@Name", lblName.Text);
                cmd.Parameters.AddWithValue("@Section", lblSect.Text);
                cmd.Parameters.AddWithValue("@Position", lblPos.Text);
                cmd.Parameters.AddWithValue("@Date_Hired", lblDateEmp.Text);
                cmd.Parameters.AddWithValue("@Leave_Type", RadioButtonList1.SelectedValue);
                cmd.Parameters.AddWithValue("@Date_From", Convert.ToDateTime(RadDatePicker1.SelectedDate));
                cmd.Parameters.AddWithValue("@Date_To", Convert.ToDateTime(RadDatePicker2.SelectedDate));
                cmd.Parameters.AddWithValue("@Time_From", Convert.ToDateTime(RadTimePicker1.SelectedDate));
                cmd.Parameters.AddWithValue("@Time_To",  Convert.ToDateTime(RadTimePicker1.SelectedDate);
                cmd.Parameters.AddWithValue("@Reason", txtReason.Text);

                cmd.ExecuteNonQuery();
                con.Close();

 }
}
4

6 に答える 6

1

その理由は、mysql と C# の日付の形式が異なる可能性があります。
関数に値を送信するには、同じ形式が必要です。

次の形式を使用できます

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

DateTime.Now.ToString("yyyyMMddHHmmss");

あなたの場合

Convert.ToDateTime(RadDatePicker1.SelectedDate).ToString("yyyy-MM-dd HH:mm:ss");
于 2013-07-04T11:38:53.763 に答える
0

挿入クエリにも列名を追加する必要があると思います。シーケンスが正しくない場合、日時列に間違った値を渡す可能性があるためです。

于 2013-07-04T13:35:06.637 に答える
0

これは、MSSQL サーバーと C# の日時形式の違いによるものに違いありません。さまざまなバージョンの SQL サーバーでアプリケーションを実行しようとしたときにも、EF でこれが発生するのを見てきました。

SQL サーバーのバージョンについて言及していないため、insert コマンドの実行中に SQL サーバー プロファイラーを実行することをお勧めします。

次に、SQL サーバー プロファイラーから SQL ステートメントを取得し、SQL クエリの日付形式を SQL サーバーの日付形式と比較します。

その後、解決策を見つけることができると確信しています。

于 2013-07-04T14:30:38.180 に答える