用JDBC中,怎么样判断oracle的主键???
PreparedStatement ps = conn.prepareStatement("select * from " + tableName);
rs = ps.executeQuery();
rsmd = rs.getMetaData();

for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (rsmd.getColumnTypeName(i).contains("BLOB")) {
filter.add(rsmd.getColumnLabel(i));
}else{
   result.add(rsmd.getColumnName(i));//字段名称
}
}
this.filter = filter;
DatabaseMetaData dmd = conn.getMetaData();
ResultSet rss = dmd.getPrimaryKeys(null, null, tableName);
if (rss.next()) {
    result.add(rss.getString(4));//主键名称            
我那个rss.next()老是返回false;
请问你们用这段程序,能不能调通??顺便问一下,你们用的驱动是什么

解决方案 »

  1.   

    你的数据库你不知道主键吗?直接进数据库查询表结构
    jdbc连接
      

  2.   

    可能是从ERP中读取数据,根本不知道表的结构
      

  3.   

    代码没问题.tableName那个表,不会没有主键吧?
      

  4.   

    我也遇到这样的问题,不过后来改成连接SQL Server数据库,就可以获得主键了。是不是在oracle中不是使用这方法获取主键
      

  5.   

    上网找到了答案,原来tableName是大小写敏感的如果是表名是小写则查不到
      

  6.   

    给你一段代码:获取TESTSNAPNEW_TSN1表的主键
    DatabaseMetaData dbmd = conn.getMetaData();
    ResultSet rsDBMD = dbmd.getPrimaryKeys(null, null, "TESTSNAPNEW_TSN1");
    while(rsDBMD.next()) {
    String pk = rsDBMD.getObject(4);//pk即要获取的主键详情才考api中getPrimaryKeys解释
    }