java getcolumns_java – JDBC DatabaseMetaData.getColumns()返回重复的列

在尝试使用JDBC的DatabaseMetaData.getColumns()方法获取Oracle数据库表'EMPLOYEES'的列名时,发现结果集中列名重复出现。每个列名都出现了两次,尽管在Oracle SQL Developer中表显示只有三列(ID, NAME, CITY)。此问题可能与Oracle JDBC驱动程序有关,但更新的解决方案是通过创建Statement执行SQL查询并使用ResultSetMetaData的getColumnLabel()方法获取列名,这种方法工作正常且无重复。" 119399174,10544232,CSS字体大小调整技巧:相对与绝对单位的应用,"['CSS布局', '前端开发', '网页设计', '字体样式', 'CSS单位']
摘要由CSDN通过智能技术生成

我正在忙于一段代码,以获取来自Oracle数据库的表的列名.我想出的代码看起来像这样:

DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());

Connection conn = DriverManager.getConnection(

"jdbc:oracle:thin:@:1521:", , );

DatabaseMetaData meta = conn.getMetaData();

ResultSet columns = meta.getColumns(null, null, "EMPLOYEES", null);

int i = 1;

while (columns.next())

{

System.out.printf("%d: %s (%d)\n", i++, columns.getString("COLUMN_NAME"),

columns.getInt("ORDINAL_POSITION"));

}

当我运行这个代码让我惊喜的时候,返回了很多列.仔细观察显示,ResultSet包含一组重复的所有列,即每列返回两次.这是我得到的输出:

1: ID (1)

2: NAME (2)

3: CITY (3)

4: ID (1)

5: NAME (2)

6: CITY (3)

当我使用Oracle SQL Developer查看表格时,它显示该表只有三列(ID,NAME,CITY).我已经尝试这个代码对数据库中的几个不同的表,一些工作很好,而其他表现出这个奇怪的行为.

Oracle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取数据库中所有表的信息,可以使用Java中的JDBC API中的DatabaseMetaData接口。以下是获取所有表信息的示例代码: ```java import java.sql.*; public class DatabaseMetaDataExample { public static void main(String[] args) { try { // 连接数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password"); // 获取数据库元数据 DatabaseMetaData metaData = conn.getMetaData(); // 获取所有表信息 String[] types = {"TABLE"}; ResultSet rs = metaData.getTables(null, null, "%", types); // 遍历结果集,输出表名 while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); System.out.println(tableName); } // 关闭连接和结果集 rs.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先使用`DriverManager`获取数据库连接,然后通过连接对象的`getMetaData`方法获取数据库元数据。接着,我们使用`getTables`方法获取所有表信息的结果集,并遍历结果集输出表名。最后,记得关闭连接和结果集。 需要注意的是,`getTables`方法的参数中,第一个参数是数据库名称,第二个参数是模式(即数据库的用户),第三个参数是表名的匹配模式,`%`表示匹配所有表。`getTables`方法返回的结果集包含所有表的信息,包括表名、表类型、表备注等。如果需要获取更详细的表信息,可以使用`getColumns`、`getPrimaryKeys`、`getImportedKeys`等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值