2012-07-19 162 views
-2

我想執行這個語句來插入一些數據到數據庫。插入值到SQL數據庫

com = new SqlCeCommand("INSERT INTO [cars table]" 
     + "([Car reg no],[MOT expiry date], Mileage,[Other information])" 
     + "VALUES (" + m._INSERTCarRegNo + "," + m._INSERTExpiryDate + "," 
     + m._INSERTMileage + "," + m._INSERTotherInformation 
     + ")",this.returnConnection); 

以上是我的聲明,但我得到一個錯誤,但錯誤是無法解析字符串。誰能幫我嗎?

謝謝

+2

您可能想要考慮防範SQL注入。 =) – 2012-07-19 09:01:25

+2

您可能也想查找參數化查詢。您的代碼目前是一個錯誤和一個潛在的安全威脅。 – 2012-07-19 09:03:37

+0

@TonyHopkinson我懶洋洋地在「bug fest」 – 2012-07-19 11:25:59

回答

1

您忘記了字符串值的引號。

com = new SqlCeCommand("INSERT INTO [cars table]" 
    + "([Car reg no],[MOT expiry date], Mileage,[Other information])" 
    + "VALUES ('" + m._INSERTCarRegNo + "','" + m._INSERTExpiryDate + "','" 
    + m._INSERTMileage + "','" + m._INSERTotherInformation 
    + "')",this.returnConnection); 

(你不需要爲數值單引號)

1

始終使用Parameters避免此類問題,SQL注入。

var [email protected]"INSERT INTO [cars table] 
     ([Car reg no],[MOT expiry date], Mileage,[Other information]) 
      VALUES (@Carregno,@MOTexpirydate,@Mileage,@Otherinformation])"; 

com = new SqlCeCommand(sql,this.returnConnection); 
com.Parameters.AddWithValue("@Carregno",m._INSERTCarRegNo); 
.. 
1

這將是一個更清潔的解決方案(而不是建立自己的SQL字符串)...

com = 
    new SqlCeCommand(
    "INSERT INTO [cars table] " + 
    "([Car reg no],[MOT expiry date], Mileage,[Other information] " + 
    "VALUES " + 
    "(@reg, @expiry, @mileage, @otherinfo)" 
    , this.returnConnection); 

com.Parameters.AddWithValue("@reg" , m._INSERTCarRegNo); 
com.Parameters.AddWithValue("@expiry" , m._INSERTExpiryDate); 
com.Parameters.AddWithValue("@mileage" , m._INSERTMileage); 
com.Parameters.AddWithValue("@otherinfo" , m._INSERTotherInformation); 
0

你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的key,created,activations,used,hotelid)values(b,1-29-13, 3,1,11)附近使用正確的語法。

+0

任何一個告訴我如何解決他的那種錯誤..? – 2013-01-30 11:31:21

+0

查詢是: - mysql_query(「插入到引腳(鍵,創建,激活,使用,hotelid)值($ key,$ created,$ actv,$ usepin,$ hotelid)」); – 2013-01-30 11:32:41