线程" main"中的例外情况java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序]

时间:2015-04-28 21:30:06

标签: java ms-access jdbc jdbc-odbc

尝试通过java代码在ms访问表中插入genename时,我收到错误

  

线程中的异常" main" java.sql.SQLException:[Microsoft] [ODBC   Microsoft Access Driver]查询中的语法错误(缺少运算符)   表达' Saccharomyces cerevisiae(菌株ATCC 204508 / S288c)'。     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)at at   sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)at at   sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3117)at at   sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)     在   sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)     在sequence.SequenceAnalyser。(SequenceAnalyser.java:50)

我的代码是

try{
    executeUpdate = odbc.state.executeUpdate("INSERT INTO genename (GENE )VALUES ("+result+")");
    odbc.state.close();
}

我该怎么办?

1 个答案:

答案 0 :(得分:0)

看起来您的result字符串包含

Saccharomyces cerevisiae (strain ATCC 204508 / S288c)

所以当你原始字符串注入 SQL 语句时,最终会出现无效的语法。

相反,您应该使用参数化查询,就像这样

String sql = "INSERT INTO genename (GENE) VALUES (?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, result);
ps.executeUpdate();