java ms访问连接

时间:2012-11-17 19:30:07

标签: java bluej jdbc-odbc

我使用BlueJ来执行一些任务是Java。我无法理解为什么我无法从MS Access数据库中获取任何记录。任何帮助将不胜感激

import java.sql.*;

public class Database
{
    private Statement s;

    /**
     * Constructor for objects of class database
     */
    public database()
    {
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }catch(ClassNotFoundException exp){
            System.err.println(exp);
        }    
        try{
            Connection con = DriverManager.getConnection("jdbc:odbc:POS", "", "");
            this.s = con.createStatement();
        }catch(SQLException e){
            e.printStackTrace();
        }       
    }

    public void test(){
       try{
           this.s.executeQuery("SELECT * FROM product");
           ResultSet rset = s.getResultSet();
           System.out.println(rset.getString("title"));
       }catch(SQLException e){
           e.printStackTrace();
       }
    }
}

这是运行test()函数时得到的输出

  

java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]无效的游标   陈述   sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)at at   sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)at at   sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)at at   sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)     在   sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)     在   sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:410)     at database.test(database.java:35)at _ SHELL9.run( _SHELL9.java:8)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:601)at   bluej.runtime.ExecServer $ 3.run(ExecServer.java:725)

我设置了ODBC驱动程序,我的数据库名称是正确的。它没有密码保护。

提前谢谢

2 个答案:

答案 0 :(得分:2)

您需要使用next()

移动光标到ResultSet
ResultSet rset = s.executeQuery("SELECT * FROM product");
if (rset.next()) {
   System.out.println(rset.getString("title"));
}

答案 1 :(得分:1)

ResultSet是一个集合,因此您必须iterate

ResultSet rset = s.executeQuery("SELECT * FROM product");
while(rset.next()){
    System.out.println(rset.getString("title"));
}

P.S。完成后,请不要忘记关闭ResultSetStatement