各位大侠,小弟求助一个关于用JDBC读取数据库表中信息的问题,代码如下:package javadm;import java.sql.*;public class Main {    
    public static class BasicApp
    {
        String jdbcString = "dm.jdbc.driver.DmDriver";
        String urlString = "Jdbc:dm://localhost:12345/Test";//Test为数据库名称
        String userName = "SYSDBA";
        String password = "asd0531";
        Connection conn = null;        public void loadJdbcDriver() throws SQLException
        {
            try
            {
                System.out.println("Loading JDBC Driver...");
                Class.forName(jdbcString);
                //DriverManager.registerDriver(new dm.jdbc.driver.DmDriver());
            }
            catch(ClassNotFoundException e)
            {
                throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
            }
            catch(Exception e)
            {
                throw new SQLException("Load JDBC Driver Error : " + e.getMessage());
            }
        }        public void connect() throws SQLException
        {
            try
            {
                System.out.println("Connecting to DM Server...");
                conn = DriverManager.getConnection(urlString,userName,password);
            }
            catch(SQLException e)
            {
                throw new SQLException("Connect to DM Server Erroe :" + e.getMessage());
            }
        }        
        public void queryTable() throws SQLException
        {
                        
            String sql = "SELECT * FROM MyTable";//MyTable为Test数据库中的一个表名
            Statement stmt = conn.createStatement();
            System.out.println("Querying table...");
            ResultSet rs = stmt.executeQuery(sql);
            displayResultSet(rs);
            rs.close();
        }        private void displayResultSet(ResultSet rs) throws SQLException
        {
            ResultSetMetaData rsmd = rs.getMetaData();
            int numCols = rsmd.getColumnCount();
            for(int i = 1;i <= numCols;i++)
            {
                if(i > 1) System.out.print(",");
                System.out.print(rs.getString(i));
            }
            System.out.println("");
        }
    }
    public static void main(String[] args)
    {
        // TODO code application logic here        try
        {
            BasicApp basicApp = new BasicApp();
            basicApp.loadJdbcDriver();
            basicApp.connect();            
            basicApp.queryTable();
            //basicApp.disConnct();
        }
        catch(SQLException e)
        {
            System.out.println(e.getMessage());
        }
    }
}调试显示结果:
run:
Loading JDBC Driver...
Connecting to DM Server...
Querying table...
当前光标不在结果集上
成功生成(总时间:0 秒)我用别的语言用ODBC都测试过,没问题,但用JAVA就搞不定,不知道为什么。恳请各位大虾指点一二,谢谢了!!!

解决方案 »

  1.   

    jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf-8
    我遇到过数据打不开的情况,后来这么把编码格式参数加上就可以了,不知道你是不是这种情况。
      

  2.   

    String jdbcString = "dm.jdbc.driver.DmDriver";
    String urlString = "Jdbc:dm://localhost:12345/Test";//Test为数据库名称
    一般就这2个地方容易搞错,第一句指示的是你jar包中DmDriver的路径,有些新的jar包和网上的路径不太一样;第二句就可能是你的端口不正确,你可以查查数据库与系统交互的端口
      

  3.   

    LZ,少个rs.next();所以游标还在第一行之前
      

  4.   

    谢谢各位的帮忙,正如楼上所说少用了一个rs.next()。谢谢!!!