-2

このステートメントを実行して、いくつかの値を DB に挿入しようとしています。

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);

上記は私のステートメントですが、エラーが発生しますが、エラーは文字列を解析できません。誰でも私を助けることができますか?

ありがとう

4

4 に答える 4

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);

(数値には一重引用符は必要ありません)

于 2012-07-19T08:59:48.487 に答える
1

Parametersこのような問題や SQL インジェクションを回避するために常に使用してください。

var sql=@"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);
..
于 2012-07-19T09:03:05.857 に答える
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);
于 2012-07-19T09:05:05.330 に答える
0

SQL 構文にエラーがあります。key,created,activations,used,hotelid)values(b,1-29-13, 3,1,11)1行目付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

于 2013-01-30T11:30:20.203 に答える