各位大侠,小弟求助一个关于用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就搞不定,不知道为什么。恳请各位大虾指点一二,谢谢了!!!
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就搞不定,不知道为什么。恳请各位大虾指点一二,谢谢了!!!
我遇到过数据打不开的情况,后来这么把编码格式参数加上就可以了,不知道你是不是这种情况。
String urlString = "Jdbc:dm://localhost:12345/Test";//Test为数据库名称
一般就这2个地方容易搞错,第一句指示的是你jar包中DmDriver的路径,有些新的jar包和网上的路径不太一样;第二句就可能是你的端口不正确,你可以查查数据库与系统交互的端口