簡體   English   中英

我想從C#中的DateTimePicker對象更新我的數據庫表中的“Datetime”數據類型的字段

[英]I want to update field with “Datetime” datatype in table of my database from DateTimePicker object in C#

注意:請不要關心Connection,因為連接工作正常。 數據庫中的字段是DateTime

DateTime dtc = Convert.ToDateTime(dateTimePicker1.Value.Date);

cmd = new SqlCommand("UPDATE LAB_TESTING set Lab_Nam='" + lab_id + "',Rslt_lb='" + 
                     textBox1.Text + "',Tst_Dat='" + dtc + "' Where Lab_ID='" + 
                     bindex + "'", con);
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("You Update recored successfully", "delete", MessageBoxButtons.OK, MessageBoxIcon.Information);
dataGridView1.DataSource = null;
con.Close();
readdatagrid1();

在運行程序后,我從字符串轉換日期和/或時間時轉換失敗。

不要使用字符串連接來構建您的查詢( SQL注入警報 ,也請閱讀此內容 !)。 使用參數化查詢 至於你的問題:將日期格式化為yyyy-MM-ddISO 8601 )並且它將起作用。

如果您已經正確使用了參數化查詢,那么您可以按原樣傳入DateTime,並且驅動程序將確保無論“格式”/語言環境設置/因為值是什么,驅動程序都會正確地傳遞給SQL作為DateTime而不是字符串傳遞。 像這樣的東西:

cmd = new SqlCommand(@"UPDATE LAB_TESTING set Lab_Nam = @labnam,
                            Rslt_lb = @result, Tst_Dat = @tstdat
                            Where Lab_ID = @id", con);

cmd.Parameters.AddWithValue("@labnam", lab_id );
cmd.Parameters.AddWithValue("@result", textBox1.Text);
cmd.Parameters.AddWithValue("@tstdat", dateTimePicker1.Value.Date);
cmd.Parameters.AddWithValue("@id", bindex);

con.Open();
cmd.ExecuteNonQuery();

除此之外,我還建議將concmd包裝在using() { ... }語句中,這樣您就可以確保這些東西得到正確處理,並且您可以為變量和字段名稱提供正確的名稱並使用一致的命名方案。

現在重復我:

  • 我永遠不會再次運行已經串聯在一起的查詢了!

  • 從現在開始,我將使用參數化查詢

  • 如果 我需要再次運行字符串連接查詢,我將確保所有值都正確轉義

大聲重復上述內容,至少50次。

嘗試這個

DateTime dtc = Convert.ToDateTime(dateTimePicker1.Value.ToString("dd/MM/yyyy"));

要不然

你也可以這樣做

DateTime dtc = Convert.ToDateTime(dateTimePicker1.Text)

如果您的SQL代碼出現此錯誤,請查看此處

這對你有用。

    var date = (DateTime)dateTimePicker1.SelectedDate.Value;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM