String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + dbpath;                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                //建立连接
                Properties prop = new Properties();
                prop.put("charSet", "gb2312");//
                //prop.put("charSet", "iso-8859-1");
                conn = DriverManager.getConnection(url, prop);qstmt = (Statement) conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);s2 = "select u_id from xiaoxi where u_title='" + "" + "' or u_link='" + "nionsudandarfursunionmmit" + "'";ResultSet result1 = qstmt.executeQuery(s2);java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 字符串的语法错误 在查询表达式 'U_TITLE='' OR U_LINK='NIONSUDANDARFURS' 中。
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
select u_id from xiaoxi where u_title='' or u_link='nionsudandarfursunionmmit'
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
        at sun.jdbc.odbc.JdbcOdbcResultSet.calculateRowCount(JdbcOdbcResultSet.java:6353)
        at sun.jdbc.odbc.JdbcOdbcResultSet.initialize(JdbcOdbcResultSet.java:155)
        at sun.jdbc.odbc.JdbcOdbcStatement.getResultSet(JdbcOdbcStatement.java:424)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:254)
        at desktopapplication1.runthread.run(runthread.java:532)
u_title,u_link数据库中都是字符串
这个很简单的查询怎么就出错的?有大哥能复制帮我试下么,好像问题就在这个字符串'nionsudandarfursunionmmit'

解决方案 »

  1.   

    s2 = "select u_id from xiaoxi where u_title='" + "' or u_link='nionsudandarfursunionmmit'"; 这么写就可以了
      

  2.   

    执行过,没问题
    用的是access2000
      

  3.   


    也不行
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 字符串的语法错误 在查询表达式 'U_TITLE='' OR U_LINK='NIONSUDANDARFURS' 中。
      

  4.   

    'nionsudandarfursunionmmit' 这个字符串中包括 union
    java驱动在对以前的 union 改善的时候 把这个当成关键字了
    改用preparestatement 就没问题了