metadatademo.java

来自「数据库远程同步软件NetBeans项目源文件 项目采用Jdesktop集成组件」· Java 代码 · 共 123 行

JAVA
123
字号
package com.qixuan.jdbc;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import com.qixuan.jdbc.util.ConnectionFactory;
import com.qixuan.jdbc.util.JdbcUtil;

public class MetaDataDemo {

	public void databaseMetadata() {
		Connection con = null;
		ResultSet rs = null;

		try {
			con = ConnectionFactory.getConnection();
			//获取元数据
			DatabaseMetaData dbmd = con.getMetaData();

			//System.out.println(dbmd.getDatabaseMajorVersion());
			//System.out.println(dbmd.getDatabaseMinorVersion());
			//System.out.println(dbmd.getDatabaseProductName());
			//System.out.println(dbmd.getDriverMajorVersion());

			if(dbmd.supportsGroupBy()) {
				System.out.println("-- 支持分组查询..");
			}
			if(dbmd.supportsBatchUpdates()) {
				System.out.println("-- 支持批处理..");
			}

			//使用DatabaseMetaData来获取当前用户下的所有表结构:
			rs = dbmd.
					getTables(
						null,
						null,
						null,
						new String[]{"TABLE"});
			System.out.println(dbmd.getUserName()+"--- 当前用户下的所有表结构如下:");
			while(rs.next()) {
				String tableName = rs.getString(3);
				System.out.println(tableName);

			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.release(con, null, rs);
		}
	}

	public void resultSetMetadata() {
		Connection con = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		try {
			con = ConnectionFactory.getConnection();
			String sql = "select id,first_name,salary from s_emp where dept_id = ?";
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, 41);
			rs = pstm.executeQuery();
			// 使用元数据来输出结果集
			ResultSetMetaData rsmd = rs.getMetaData();
			//获取列的数量
			int columnCount = rsmd.getColumnCount();
			for(int i=1;i<=columnCount;i++) {
				System.out.print(rsmd.getColumnLabel(i)+"\t");
			}
			System.out.println();
			System.out.println("--------------------------------");
			while(rs.next()) {
				for(int i=1;i<=columnCount;i++) {
					System.out.print(rs.getObject(i)+"\t");
				}
				System.out.println();
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.release(con, pstm, rs);
		}
	}

	/******************************
	 * 此方法利用execute和结果集的元数据
	 * 来执行任意的SQL语句,并动态的显示
	 * 执行结果
	 */
	public void executeSQL(String sql) {
		Connection con = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		try {
			//1. 获取连接
			con = ConnectionFactory.getConnection();
			pstm = con.prepareStatement(sql);
			//2.执行SQL
			boolean flag = pstm.execute();
			//如果此方法返回TRUE,表示执行的是SELECT
			if(flag) {
				//得到结果集
				rs = pstm.getResultSet();
				//打印出结果集
				JdbcUtil.printRS(rs);
			} else {
				int count = pstm.getUpdateCount();
				System.out.println(count+" records was updated...");
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.release(con, pstm, rs);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?