真正做过java开发的高手请进来(100分)

  • 主题发起人 主题发起人 kntrue
  • 开始时间 开始时间
K

kntrue

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用DatabaseMetaData类来得到oracle某一个表的所有字段,出现了一个问题
代码如下:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
String sConnection = "jdbc:odbc:oraDb";
//连接数据库
Connection con =
DriverManager.getConnection(sConnection, "user", "111");

DatabaseMetaData dm = con.getMetaData();

ResultSet rs = dm.getColumns(null, null, "COMPANY", null);
while (rs.next())
{
String s = rs.getString("COLUMN_NAME");
System.out.println("s = " + s);
}
当我得到打印的COMPANY表的列名时,发现结果集中包含了2倍的字段(也就是说如果实际COMPANY表有a,b两个字段,rs返回中包含了a,b,a,b 4个值).我尝试了mysql,和sqlserver数据库都是正常的.我估计是ResultSet rs = dm.getColumns(null, null, "COMPANY", null);参数设置的问题,也在网上找了文章但是还是没有看懂,请大虾不吝赐教!!
万分感谢
 
你的问题不是
ResultSet rs = dm.getColumns(null, null, "COMPANY", null);
ResultSet rs = dm.getColumns(null, null, "COMPANY", "%");
都是对的
你的问题 在于你用的是ODBC for Oracle 的驱动 造成的问题
你可以使用jdbc for Oracle 来解决问题
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch (ClassNotFoundException e)
{
System.out.println("could not load the driver");
}
System.out.println("connecting to local database");
try{
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@137.111.160.95:1521:ora817","timestamp","timestamp");
DatabaseMetaData dm = conn.getMetaData();
ResultSet rs = dm.getColumns (null, null, "USERRINFDATE", null);
while (rs.next())
{
String s = rs.getString("COLUMN_NAME");
System.out.println("s = " + s);
}
}
catch(Exception e){
System.out.println(e.getMessage() );
}
 
为什么不用连接池,
而是直接去连数据库,
有什么必需的原因么??
 
后退
顶部