JDBC获取所有表及获取表所有字段

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * Title 获取库中所有表及表的所有字段. <br>
 * Description.
 * <p>
 * Copyright: Copyright (c) 2014-12-3 上午12:00:54
 * <p>
 * Company: -----------
 * <p>
 * Author: dongjihui2005@163.com
 * <p>
 * Version: 1.0
 * <p>
 */
public class Mysqltest {

	/**
	 * @param args
	 * @throws ClassNotFoundException 
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection("jdbc:mysql://202.0.0.201:3306/mysql", "root", "root");
		System.out.println(getTables(conn));
		System.out.println("=============================");
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery("select * from user");
		List<String> colNames = getColNames(rs);
		while(rs.next()){
			for (int i = 0; i < colNames.size(); i++) {
				System.out.print(rs.getObject(colNames.get(i)));
				if(i!=colNames.size()-1)
					System.out.print("\t");
			}
			System.out.println();
		}
		rs.close();
		st.close();
		conn.close();
	}

	/**获取数据库中所有表名称
	 * @param conn
	 * @return
	 * @throws SQLException 
	 */
	private static List<String> getTables(Connection conn) throws SQLException {
		DatabaseMetaData databaseMetaData = conn.getMetaData();
		ResultSet tables = databaseMetaData.getTables(null, null, "%", null);
		ArrayList<String> tablesList = new ArrayList<String>();
		while (tables.next()) {
			tablesList.add(tables.getString("TABLE_NAME"));
		}
		return tablesList; 
	}

	/**获取表中所有字段名称
	 * @param rs
	 * @throws SQLException
	 */
	private static List<String> getColNames(ResultSet rs) throws SQLException {
		ResultSetMetaData metaData = rs.getMetaData();
		int count = metaData.getColumnCount();
		System.out.println("getCatalogName(int column) 获取指定列的表目录名称。"+metaData.getCatalogName(1));
		System.out.println("getColumnClassName(int column) 构造其实例的 Java 类的完全限定名称。"+metaData.getColumnClassName(1));
		System.out.println("getColumnCount()  返回此 ResultSet 对象中的列数。"+metaData.getColumnCount());
		System.out.println("getColumnDisplaySize(int column) 指示指定列的最大标准宽度,以字符为单位. "+metaData.getColumnDisplaySize(1));
		System.out.println("getColumnLabel(int column) 获取用于打印输出和显示的指定列的建议标题。 "+metaData.getColumnLabel(1));
		System.out.println("getColumnName(int column)  获取指定列的名称。"+metaData.getColumnName(1));
		System.out.println("getColumnType(int column) 获取指定列的 SQL 类型。 "+metaData.getColumnType(1));
		System.out.println("getColumnTypeName(int column) 获取指定列的数据库特定的类型名称。 "+metaData.getColumnTypeName(1));
		System.out.println("getPrecision(int column)  获取指定列的指定列宽。 "+metaData.getPrecision(1));
		System.out.println("getScale(int column) 获取指定列的小数点右边的位数。 "+metaData.getScale(1));
		System.out.println("getSchemaName(int column) 获取指定列的表模式。 "+metaData.getSchemaName(1));
		System.out.println("getTableName(int column) 获取指定列的名称。 "+metaData.getTableName(1));
		List<String> colNameList = new ArrayList<String>();
		for(int i = 1; i<=count; i++){
			colNameList.add(metaData.getColumnName(i));
		}
		System.out.println(colNameList);
//		rs.close();
		rs.first();
		return colNameList;
	}

}


转载于:https://my.oschina.net/u/1035999/blog/351649

要使用JDBC获取DB2中的字段,你可以按照以下步骤进行操作: 1. 导入必要的包和类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; ``` 2. 建立数据库连接: ```java String url = "jdbc:db2://hostname:port/databaseName"; String username = "yourUsername"; String password = "yourPassword"; Connection connection = DriverManager.getConnection(url, username, password); ``` 请将"hostname"替换为DB2服务器的主机名,"port"替换为DB2服务器的端口号,"databaseName"替换为要连接的数据库名称,"yourUsername"和"yourPassword"分别替换为您的DB2用户名和密码。 3. 创建Statement对象: ```java Statement statement = connection.createStatement(); ``` 4. 执行SQL查询语句: ```java String sql = "SELECT * FROM yourTableName"; ResultSet resultSet = statement.executeQuery(sql); ``` 请将"yourTableName"替换为您要查询的的名称。 5. 获取结果集中的字段信息: ```java ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = metaData.getColumnName(i); String columnType = metaData.getColumnTypeName(i); int columnSize = metaData.getColumnDisplaySize(i); System.out.println("Column Name: " + columnName); System.out.println("Column Type: " + columnType); System.out.println("Column Size: " + columnSize); } ``` 上述代码通过ResultSetMetaData类获取结果集中的字段信息,包括字段名称、字段类型和字段大小等。 6. 关闭连接和相关资源: ```java resultSet.close(); statement.close(); connection.close(); ``` 确保在使用完之后关闭连接和相关资源,以释放数据库资源和避免内存泄漏。 这就是使用JDBC从DB2获取字段信息的基本步骤。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值