我正在嘗試將日期時間選擇器中的值插入資料庫,但出現未處理的例外
從字串轉換日期和/或時間時轉換失敗
這是我使用的代碼:
private void bunifuFlatButton8_Click(object sender, EventArgs e)
{
if (OrderID.Text == "" || CustomerID.Text == "" || CustName.Text == "" || AmountTB.Text =="")
{
MessageBox.Show("Fill the data correctly");
}
else
{
SqlCommand cmd = new SqlCommand("insert into OrderTB values(" OrderID.Text "," CustomerID.Text ",'" CustName.Text "','" OrderDate.Text "'," AmountTB.Text ")", Con);
Con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Order successfully added");
Con.Close();
populate();
}
}
任何幫助將不勝感激。
uj5u.com熱心網友回復:
正如@??ssa P?ngj?rdenlarp 在評論中提到的那樣,您必須使用正確格式的值,應該是DateTime.
您的代碼中有幾個問題,讓我在下面突出顯示它們。
- 您應該使用
using連接來處理它們。 - 將您的代碼正確地放在try-catch中,而不是像代碼中提到的那樣。您應該使用引數化查詢來避免 SQL 注入。
- 如果 Text 是 ,也要處理這種
null情況null。 - 您還可以利用 的回傳值
ExecuteNonQuery。
uj5u.com熱心網友回復:
您可以使用下面的代碼。如果您想使用 try 和 catch 使用它來獲取錯誤,而不是 OrderDate.Text 使用 OrderDate.Value 來獲取 DateTime 值并將其轉換為所需格式的字串,如下所示
private void bunifuFlatButton8_Click(object sender, EventArgs e)
{
if (OrderID.Text == "" || CustomerID.Text == "" || CustName.Text == "" || AmountTB.Text =="")
{
MessageBox.Show("Fill The data Correctly");
}
else
{
try
{
//Instead of OrderDate.Text use OrderDate.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") then you will have correct format for SQL Insert
using(SqlCommand cmd = new SqlCommand("insert into OrderTB values(" OrderID.Text "," CustomerID.Text ",'" CustName.Text "','" OrderDate.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") "'," AmountTB.Text ")", Con))
{
Con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Order Successfully Added");
Con.Close();
populate();
}
}
catch(Exception ex)
{
MessageBox.Show("I got an error : " ex.Message); // This will give you error message instead of stopping your program
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536653.html
標籤:C#数据库
