2017-06-27 72 views
-1

私は、コード内のエラーを見つけることができませんが、それは私にSystem.Data.SqlClient.SqlException: '構文が正しくありません') '。'

System.Data.SqlClient.SqlException示す:エラーが何の近くに不適切な構文 ')

SqlCommand myCommand = new SqlCommand(" insert into" + 
    " INTERVALDATA4(SerialNumber, TimeStamp, MeterData,) " + 
    "values(" + meterReading.SerialNumber + ", '" + reading.TimeStamp.ToString() 
    + "'," + reading.RawReading +");", myConnection); 
myCommand.ExecuteNonQuery(); 

をし、それを修正する方法は私の上の任意の助けてくださいできますか? ありがとう

+3

あなたは余分なコンマ 'MeterData、)SQLインジェクションや書式の問題を回避するために、' – Sami

+4

使用パラメータを持っています。 – LarsTech

答えて

2

INTERVALDATA4(SerialNumber, TimeStamp, MeterData,)INTERVALDATA4(SerialNumber, TimeStamp, MeterData)に置き換えると、余分なカンマがあるためです。私は'で囲まれた余分な引数を見ることができますが、それらのうちのいくつかはまだありません。まだこの問題がある場合は、'ですべてを囲んでみてください。

とにかく私はこの方法でSQLインジェクションを開いているので、SqlParameterを使用してパラメータを渡すことを検討します。簡単にタイプミスを発見し、SQLインジェクションを防ぐため、このようなあなたのクエリをパラメータ化を検討する

+0

ありがとうございますRajmond – a5656

+0

喜んで、それが正しい答えなら正解と考えてください:)。あなたは私に知らせて他の問題がある場合:) –

0

string myQuery = "INSERT INTO INTERVALDATA4(SerialNumber, TimeStamp, MeterData) VALUES (@serialNumber, @timeStamp, @rawReading)"; 
SqlCommand myCommand = new SqlCommand(myQuery, myConnection); 
myCommand.Parameters.Add("@serialNumber", meterReading.SerialNumber); 
myCommand.Parameters.Add("@timeStamp", reading.TimeStamp.ToString()); 
myCommand.Parameters.Add("@rawReading", reading.RawReading); 

myCommand.ExecuteNonQuery(); 
関連する問題