0

使用 java eclipse 查询 ms access 数据库时出现此错误。

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Undefined function txtIcNo.getText' in expression.
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
    at GetDataFromDB.retrieveDB(GetDataFromDB.java:103)
    at GetDataFromDB.actionPerformed(GetDataFromDB.java:79)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)"

我的代码如下

 public void retrieveDB() throws SQLException,ClassNotFoundException{
    //load JDBC Driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:PatientDB");
    String query = "SELECT * FROM PatientDB WHERE IC_No = txtIcNo.getText()";
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    con.commit();
    while(rs.next()){
    if("txtIcNo.getText()"!=null){

    txtIcNo.setText(rs.getObject(1).toString());    
    txtName.setText(rs.getObject(2).toString());
    }
    else{
    System.out.println("Bye bye");
    }
    }
    con.close();
    }
4

1 回答 1

1

如果这只是一个学习练习,那么尝试类似

String query = "SELECT * FROM PatientDB WHERE IC_No = '" + txtIcNo.getText() + "'";

如果这是用于生产代码,则不要使用上述代码。相反,对“SQL 注入”攻击进行一些 Web 搜索,然后了解“参数化查询”并使用它们。

于 2013-04-12T10:19:59.120 回答