2016-09-23 22 views
1

自分のシステムでVC++(Visual C++)を使用しています。私はSQLコマンド(INSERT INTO)を使用したAccessデータベースに学生の情報を追加しています。VC++ SQL INSERT INTOエラー

は、これは私が学生の情報は、エラーメッセージを示して追加したとき、私のコードは

  OleDb::OleDbConnection^ con = gcnew OleDb::OleDbConnection(); 
     OleDb::OleDbCommand^ command = gcnew OleDb::OleDbCommand(); 
     con->ConnectionString::set(conStr); 
     con->Open(); 

String^ cmdTxt = " 
    insert into students(studno, fname, lname, 
     mname, gender, status, birthday, course, shift, section, homeadd, 
     provadd, contactnum, nameguard, addguard, contguard, sec1, sub1, 
     room1, unit1, guro1, sec2, sub2, room2, unit2, guro2, sec3, sub3, 
     room3, unit3, guro3, sec4, sub4, room4, unit4, guro4, sec5, sub5, 
     room5, unit5, guro5, sec6, sub6, room6, unit6, guro6, sec7, sub7, 
     room7, unit7, guro7, sec8, sub8, room8, unit8, guro8, sec9, sub9, 
     room9, unit9, guro9, sec10, sub10, room10, unit10, guro10) 
    values('" + studno + "', '" + fname + "', '" + lname + "', '" + mname + "', 
    '" + sex + "', '" + status + "', '" + birthday + "', '" + course + "', 
    '" + shift + "', '" + section + "', '" + homeAdd + "', '" + provAdd + "', 
    '" + contactnum + "', '" + nameGuardian + "', '" + addGuardian + "', 
    '" + numGuardian + "', '" + se1 + "', '" + sub1 + "', '" + room1 + "', 
    '" + unit1 + "', '" + guro1 + "', '" + se2 + "', '" + sub2 + "', 
    '" + room2 + "', '" + unit2 + "', '" + guro2 + "', '" + se3 + "', 
    '" + sub3 + "', '" + room3 + "', '" + unit3 + "', '" + guro3 + "', 
    '" + se4 + "', '" + sub4 + "','" + room4 + "', '" + unit4 + "', 
    '" + guro4 + "', '" + se5 + "', '" + sub5 + "', '" + room5 + "', 
    '" + unit5 + "', '" + guro5 + "', '" + se6 + "', '" + sub6 + "', 
    '" + room6 + "', '" + unit6 + "', '" + guro6 + "', '" + se7 + "', 
    '" + sub7 + "', '" + room7 + "', '" + unit7 + "', '" + guro7 + "', 
    '" + se8 + "', '" + sub8 + "', '" + room8 + "', '" + unit8 + "', 
    '" + guro8 + "', '" + se9 + "', '" + sub9 + "', '" + room9 + "', 
    '" + unit9 + "', '" + guro9 + "', '" + se10 + "', '" + sub10 + "', 
    '" + room1 + "', '" + unit10 + "', '" + guro10 + "')"; 
     command->Connection::set(con); 
     command->CommandText::set(cmdTxt); 
     command->ExecuteNonQuery(); 
     con->Close(); 

私はコンパイルし、それを実行したときには見つかりませんでしたエラーが、問題があるAccessデータベースに学生の情報を追加することです

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll 

Additional information: Syntax error in INSERT INTO statement. 

INSERT INTOで何度もチェックしたので、私はそれを変更しました

   command->CommandText::set("insert into students(" 
      + "studno," 
      + "fname," 
      + "lname," 
      + "mname," 
      + "gender," 
      + "status," 
      + "birthday," 
      + "course," 
      + "shift)" 
      + "values(" 
      + "'" + studno + "', '" 
      + fname + "', '" 
      + lname + "', '" 
      + mname + "', '" 
      + sex + "', '" 
      + status + "', '" 
      + birthday + "', '" 
      + course + "', '" 
      + shift + "')"); 

このコードは100%動作しているので、フィールドを追加します。

   command->CommandText::set("insert into students(" 
      + "studno," 
      + "fname," 
      + "lname," 
      + "mname," 
      + "gender," 
      + "status," 
      + "birthday," 
      + "course," 
      + "shift," 
      + "section)" 
      + "values(" 
      + "'" + studno + "', '" 
      + fname + "', '" 
      + lname + "', '" 
      + mname + "', '" 
      + sex + "', '" 
      + status + "', '" 
      + birthday + "', '" 
      + course + "', '" 
      + shift + "', '" 
      + section + "')");   

だからエラーになります。 -_-

ので、どのように

+0

変更 '' '' [section]) "' – HansUp

+0

オハイオ州、それは動作します:D –

答えて

1

SECTIONreserved wordでこの問題を解決するために。その名前を大括弧で囲むと、Accessはフィールド名であることを理解します。だから変更する"section)""[section])"

関連する問題