2010-07-30 215 views
-1
SqlConnection con = new SqlConnection(str); 
int ID; 
ID = Int32.Parse(Combo_Stu.SelectedValue.ToString()); 
double a = double.Parse(Txt_Ins.Text); 
string date = dtp_Stu.Value.ToString(); 
SqlCommand sqlcmd1 = new SqlCommand("INSERT INTO Instalment_Billing(ID,Pay_Date, Fees) VALUES (" + ID + "," + **date** + "," + a + ")", con); 
con.Open(); 
sqlcmd1.ExecuteNonQuery(); 

附近有語法錯誤「10」 我收到日期 猜測請這個錯誤幫我附近有語法錯誤「10」

+0

更好地檢查來自Pax的答案是一個很好的答案,因爲他解決了您的問題。 – riffnl 2010-07-30 06:13:44

回答

5

這個問題可能是你的約會是不帶引號的,但真正解決這個問題是使用參數化查詢。

5

每當你在一條線,如得到一個錯誤:

SqlCommand sqlcmd1 = new SqlCommand("INSERT INTO Instalment_Billing(" + 
    "ID,Pay_Date, Fees) VALUES (" + ID + "," + date + "," + a + ")", con); 

你應該立即插入一些代碼打印出來,並檢查它是否是有效的SQL:

Console.WriteLine ("INSERT INTO Instalment_Billing(" + 
    "ID,Pay_Date, Fees) VALUES (" + ID + "," + date + "," + a + ")"); 

或:

System.Windows.Forms.MessageBox.Show("INSERT INTO Instalment_Billing" + 
    "(ID,Pay_Date, Fees) VALUES (" + ID + "," + date + "," + a + ")"); 

這應該告訴你正好你的問題在哪裏。最有可能的日期的插入應該使用格式'yyyy.mm.dd'或類似的字符串,所以你應該在最低限度:

  • 報價日期字符串(... + ",'" + date + "'," + ...)。
  • 確保它的格式沒問題(我不確定什麼ToString()會讓你失望,但我會認爲,考慮到你今天發佈了這個消息,而不是本月的第10個月或第10天,這可能是類似於yy-mm-dd和2010年未報價的10令你感到悲傷)。
+0

SqlConnection con = new SqlConnection(str); int ID; ID = Int32.Parse(Combo_Stu.SelectedValue.ToString()); double a = double.Parse(Txt_Ins.Text); string date = dtp_Stu.Value.ToString(「yyyy-MM-dd」); (1,CONVERT(DATETIME,'「+ date +」',102),100)「,con);這個函數返回一個新的SqlCommand對象。 con.Open(); sqlcmd1.ExecuteNonQuery(); 非常感謝 我改變了我的輸入字符串YYYY-MM-DD和它的工作 – 2010-07-30 05:41:32