2016-09-23 125 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(); 

没有当我编译并运行它发现错误,问题是,当我加入学生的信息显示错误消息

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

更改'“部分)”'''[部分])“' – HansUp

+0

哦,它的工作原理:D –

回答

1

SECTIONreserved word。如果您用方括号包围该名称,Access会明白它是一个字段名称。所以改变"section)""[section])"