0

我正在尝试通过 java 通过 odbc 驱动程序更新访问数据库。

表名是form1

执行此命令时出现语法错误:

updates="INSERT INTO form1 
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings); 

values("+abc+",'"+t3.getText()+"','"+t4.getText()+"',"+def+","+def1+","+zzz+",'"
      +t8.getText()+"','"+t9.getText()+"','"+t10.getText()+"',"+aaaa+",'"
      +t12.getText()+"',"+xyz+",'"+t13.getText()+"','"+dd+"','sa','da')";

谢谢你。

4

6 回答 6

1

您的陈述有两个问题 - 一个真实的和一个潜在的问题:

  • real:关键字前的分号values需要去掉
  • 潜在性:语句需要转换为与参数一起使用,否则任何字符串参数的正文中的单引号都会导致语法错误。

以下是如何切换到参数化准备好的语句:

String updates="INSERT INTO form1 (entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,bloodgroup,slno,college,department,liveprojects,trainings) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement psUpd = con.prepareStatement(updates);
psUpd.setInt(1, abc);
psUpd.setString(2, t3.getText());
psUpd.setString(3, t4.getText());
psUpd.setInt(4, def);
psUpd.setInt(5, def1); // The types of parameters need to match the type of setXYZ
... // Continue for the remaining parameters, then call
psUpd.executeUpdate();
于 2012-08-04T10:43:55.237 回答
1

第一个问题:

updates="INSERT INTO form1 
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings);

*你用 ; 分隔字段和值 但它将是空白的 *

其次最好使用prepareStatement

String sql ="INSERT INTO TableName  
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?); 

    PreparedStatement ps = con.prepareStatement(sql );    
     int index = 1;
    ps.setInt(index++, abc);
    ps.setString(index++, t3.getText());
    ps.setString(index++, t4.getText());
    ps.setInt(index++, def);
    ps.setInt(index++, def1); // The types of parameters need to match the type of setXYZ
    ... // Continue for the remaining parameters, then call
    ps.executeUpdate();
于 2012-08-04T11:27:33.587 回答
0

尝试删除;之前的values.

于 2012-08-04T10:43:42.510 回答
0

1.

直接使用INSERT INTO form1 values(value1,value2......);

2.如果您想坚持自己的格式...然后进行以下更改。

-删除; 之前 values.

-要插入逗号最好使用 "," 而不是 ','

于 2012-08-04T10:47:04.410 回答
0

列名后的分号 (;) 是罪魁祸首。您正在通过这样做来终止声明。只需删除 ; . 您的代码将起作用。

于 2012-08-04T10:55:22.707 回答
0

尝试这个.....

updates="INSERT INTO form1(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,bloodgroup,slno,college,department,liveprojects,trainings) 
values( '"+abc+"','"+t3.getText()+"','"+t4.getText()+"','"+def+"','"+def1+"','"+zzz+"','" +t8.getText()+"','"+t9.getText()+"','"+t10.getText()+"','"+aaaa+"','"
  +t12.getText()+"','"+xyz+"','"+t13.getText()+"','"+dd+"','sa','da')";
于 2012-08-04T11:45:12.267 回答