如何通过JDBC取得数据库表结构信息

做制作开发平台时,首要的一点是如何取得数据库表结构信息。一般通用的做法就是通过JDBC中的ResultSetMetaData类来进行操作,当你取得了数据库表结构信息后,比如说表的每个字段名称,字段类型等。

首先取得数据库连接后取得DatabaseMetaData。

DatabaseMetaData dbmd = con.getMetaData();

con是一个数据库连接,直接通过连接信息取得。

然后我们就可以取当前数据库中的所有表:

        ArrayList v = new ArrayList();
        ResultSet rs = null;
        String[] typeList = new String[] { "TABLE" };
        rs = dbmd.getTables(catalog, schema, null, typeList);
        for (boolean more = rs.next(); more; more = rs.next()) {
            String s = rs.getString("TABLE_NAME");
            String type = rs.getString("TABLE_TYPE");
            if (type.equalsIgnoreCase("table") && s.indexOf("$") == -1)
                v.add(s);
        }
其中的rs.getString("TABLE_NAME");方法就是取得表名。

取得表名我们在执行select * from tablename 的方法,取得结果集:

String sql = "select * from "+tableName;

   Statement state = con.createStatement();
   ResultSet rs = state.executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData() ;
   for(int i = 1; i <= rsmd.getColumnCount(); i++)
   {
        String colname = rsmd.getColumnName(i);
             String typeName = rsmd.getColumnTypeName(i);
             int itype = rsmd.getColumnType(i);
             int size = rsmd.getColumnDisplaySize(i);
             int precision=rsmd.getPrecision(i);
             int n = rsmd.isNullable(i);
             int scale=rsmd.getScale(i);
             boolean nullable = true;
             switch (n) {
             case 0: // '/0'
                 nullable = false;
                 break;

             case 1: // '/001'
                 nullable = true;
                 break;

             default:
                 nullable = true;
                 break;
             }
             SQLColumn col = new SQLColumn(colname);
             SQLType type = simpleType(typeName, itype);
             if (type.allowsParameters())
                 type.setParameterString("" + size);
             col.setType(type);
             col.setIType(itype);
             col.setSize(size);
             col.setScale(scale);
             col.setPrecision(precision);
             col.setNullable(nullable);
             col.setReadOnly(rsmd.isReadOnly(i));
             col.setAutoIncrement(rsmd.isAutoIncrement(i));
             col.setSearchable(rsmd.isSearchable(i));
             col.setCurrency(rsmd.isCurrency(i));
             col.setCaseSensitive(rsmd.isCaseSensitive(i));
             col.setSigned(rsmd.isSigned(i));
             col.setClassType(rsmd.getColumnClassName(i));
             col.setDisName(rsmd.getColumnLabel(i));
             if ( col.getDisName().length() > 0 )
              col.setName(col.getDisName()) ;
    columns.add(col);
   }

以上操作就取得了表的每个字段信息。得到这些字段信息,就可以为数据库层的各种操作生成所需的代码了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要使用JDBC获取数据库中的所有信息,你需要以下步骤: 1. 导入JDBC相关的包:首先,确保你已经导入了Java JDBC相关的包,包括 `java.sql` 和 `javax.sql`。 2. 加载驱动程序:使用 `Class.forName()` 方法加载数据库的驱动程序。例如,如果你使用的是MySQL数据库,可以加载MySQL驱动程序: ```java Class.forName("com.mysql.cj.jdbc.Driver"); ``` 3. 建立数据库连接:使用 `DriverManager.getConnection()` 方法建立与数据库的连接。你需要提供数据库的URL、用户名和密码。例如,连接到名为 `mydatabase` 的MySQL数据库: ```java String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "your-username"; String password = "your-password"; Connection connection = DriverManager.getConnection(url, username, password); ``` 4. 创建Statement对象:通过连接对象创建一个 `Statement` 对象,用于执行SQL查询语句。 ```java Statement statement = connection.createStatement(); ``` 5. 执行查询语句:使用 `executeQuery()` 方法执行SQL查询语句,并将结果保存在 `ResultSet` 对象中。 ```java String query = "SELECT * FROM your-table"; ResultSet resultSet = statement.executeQuery(query); ``` 6. 处理结果集:通过遍历 `ResultSet` 对象来处理查询结果。你可以使用 `next()` 方法移动到下一行,并使用 `getXxx()` 方法获取每一列的值。例如,假设你的中有列名为 `id` 和 `name` 的两列: ```java while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); // 处理每一行的数据 } ``` 7. 关闭连接和资源:在使用完数据库连接和结果集后,记得关闭它们以释放资源。 ```java resultSet.close(); statement.close(); connection.close(); ``` 以上是使用JDBC获取数据库中所有信息的基本步骤。你可以根据具体的结构和查询需求进行相应的调整和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值