2016-10-09 25 views
-1

システムをリメイクしようとしていて、古いシステムは100%動作していますが、何か変更したとき(msアクセスデータベースに多数のカラムを追加しました)各テキストボックスのデータを挿入する際に正しい形式を使用しますが、それでも "文の挿入に誤りがあります"と表示されます。C#windowsform - 文の挿入時に構文エラーが発生する

これは私のコードです。それは私が得たエラーだけですクエリを読んで時間をかけてください。私はデータベースと各分野のスペルや大文字をここで二重にチェックしました。

try 
     { 
      connection.Open();          //open connection 
      OleDbCommand command = new OleDbCommand();    // command object , we can execute to validate our database 
      command.Connection = connection;      // make a connection for the command 

      command.CommandText = " insert into StudentsRecord([StudentID],Name,Section,Semester,MathPrelim,MathMidterm,MathFinals,MathAverage,MathFinalGrade,EnglishPrelim,EnglishMidterm,EnglishFinals,EnglishAverage,EnglishFinalGrade,SciencePrelim,ScienceMidterm,ScienceFinals,ScienceAverage,ScienceFinalGrade,StatisticsPrelim,StatisticsMidterm,StatisticsFinals,StatisticsAverage,StatisticsFinalGrade,ReadandWritePrelim,ReadandWriteMidterm,ReadandWriteFinals,ReadandWriteAverage,ReadandWriteFinalGrade) values ('" + txtStudentID.Text + "' , '" + txtName.Text + "' , '" + txtSection.Text + "' , '" + cmbSemester.SelectedItem + "', '" + txtMathp.Text + "' , '" + txtMathm.Text + "' , '" + txtMathf.Text + "' , '" + txtMatha.Text + "' , '" + txtMathFG.Text + "' , '" + txtEnglishp.Text + "' , '" + txtEnglishm.Text + "', '" + txtEnglishf.Text + "','" + txtEnglisha.Text + "','" + txtEnglishFG.Text + "','" + txtMathFG.Text + "','" + txtSciencep.Text + "','" +txtSciencem.Text+ "','" + txtSciencef.Text + "','" + txtSciencea.Text + "','" + txtScienceFG.Text + "','" + txtStatisticsp.Text + "','" + txtStatisticsm.Text + "','" + txtStatisticsf.Text + "','" + txtStatisticsa.Text + "','" + txtStatisticsFG.Text + "','" + txtReadandWritep.Text + "','" + txtReadandWritem.Text + "','" + txtReadandWritef.Text + "','" + txtReadandWritea.Text + "','" + txtReadandWriteFG.Text + "')"; 
      /* this is a string or a query used to execute. asterisk is used 
      to give you all column data from your database ,declaration of query */ 


      command.ExecuteNonQuery();   // this is used to inserting data , updating or deleting data , this command will execute the above query 
      MessageBox.Show(" Saved! "); 

     } 
     catch (Exception a) 
     { 
      MessageBox.Show(" Error " + a.Message); 
     } 
     connection.Close(); 
+0

エラーメッセージとは何か、command.CommandTextの内容は何ですか? – NineBerry

+0

エラーメッセージは「INSERT INTO文のエラー」です。すでにフィールド、スペル、大文字とその位置は2重にチェックされていますが、それでもエラーが表示されます。 commandtextはクエリです。その構文は以前のバージョンのグレーディングシステムで使用したものです。私は働いています。なぜそれが今働かないのか分かりません。 – Sky

答えて

2

私はあなたが29個のフィールドを持つ最初の部分で見ますが、挿入されたフィールドを加えて30 ... ている、あなたは、SQLインジェクションを防ぐためにparameterized queriesを使用する必要があります。

+0

こんにちは、私はすでに挿入フィールドの余分なフィールドを削除しましたが、エラーはまだ発生します。ちょっと、私はもう何をすべきかわかりません。この構文は私の以前のシステムの助けを借りている人のために働くようです – Sky

+0

Btwはこのシステムが学校の目的のためだけに使用されているので、何の質問も持っていないと心配しません。私はこれを正式に他の人が使っているシステムにしません。 – Sky

0

エラーを特定するには、コードをデバッグしてCommandTextをSSMS(SQL Sever Management Studio)に貼り付ける必要があります。

その他の提案:

  • command.CommandText = String.Formatの( "StudentsRecord(..)VALUES(@ ...)に挿入); SQLのparamsを使用して、SQLインジェクション
  • を避けるために(SqlConnectionオブジェクトCONN = ...)
0

は、すでに各フィールドに[ ]を置くことによってちょうど今、問題を解決し、このようなものになる:。

insert into StudentsRecord(
    [StudentID],[Name],[Section],[Semester], 
    [MathPrelim],[MathMidterm],[MathFinals] 
) values ('"++"'..) ... etc. 

私を助けようとしたみなさん、良い一日を!

関連する問題