import java.io.IOException; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class Jdbc { // 数据库连接地址 private static final String url = "jdbc:mysql://localhost:3306/st"; // 用户名密码 private static final String user = "root"; private static final String pwd = ""; /*** * 数据库查询 * * @throws ClassNotFoundException * @throws IOException */ public static void query() throws ClassNotFoundException, IOException { Connection conn = null; java.sql.PreparedStatement pst = null; ResultSet re = null; /* * DBC提供了DatabaseMetaData来封装数据库连接对应的数据库信息, * 通过Connection的getMetaData方法来获取该对象。 * DatabaseMetaData接口通常数据库驱动提供商完成实现,其作用是让用户了解数据库的底层信息。 * 使用该接口可以了解数据库底层的实现,便于完成多个数据库的相互切换。 */ DatabaseMetaData metadata = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, user, pwd); metadata = conn.getMetaData(); System.out.println("数据库已知的用户: " + metadata.getUserName()); System.out.println("数据库的系统函数的逗号分隔列表: " + metadata.getSystemFunctions()); System.out.println("数据库的时间和日期函数的逗号分隔列表: " + metadata.getTimeDateFunctions()); System.out.println("数据库的字符串函数的逗号分隔列表: " + metadata.getStringFunctions()); System.out.println("数据库供应商用于 'schema' 的首选术语: " + metadata.getSchemaTerm()); System.out.println("数据库URL: " + metadata.getURL()); System.out.println("是否允许只读:" + metadata.isReadOnly()); System.out.println("数据库的产品名称:" + metadata.getDatabaseProductName()); System.out.println("数据库的版本:" + metadata.getDatabaseProductVersion()); System.out.println("驱动程序的名称:" + metadata.getDriverName()); System.out.println("驱动程序的版本:" + metadata.getDriverVersion()); System.out.println("驱动程序的版本:" + metadata.getTableTypes()); System.out.println("............................................"); pst = conn.prepareStatement("select * from company_basic"); // 获取数据库列 re = pst.executeQuery(); // 数据库列名 ResultSetMetaData data = re.getMetaData(); // getColumnCount 获取表列个数 for (int i = 1; i <= data.getColumnCount(); i++) { // 获取列表 index 从1开始、列名、列类型、列的数据长度 System.out.println(data.getColumnName(i) + "\t" + data.getColumnTypeName(i) + "\t" + data.getColumnDisplaySize(i) + "\t" + data.getColumnClassName(i)); } ResultSet resultSet = metadata.getTables(null, "%", "%", new String[] { "TABLE" }); /* * while (resultSet.next()) { String * tableName=resultSet.getString("TABLE_NAME"); ResultSet rs = * metadata.getColumns(null, "%", tableName, "%"); * System.out.println("表名:"+tableName+"\t\n表字段信息:"); * while(rs.next()){ * System.out.println("字段名:"+rs.getString("COLUMN_NAME")+"\t字段注释:"+ * rs.getString("REMARKS")+"\t字段数据类型:"+rs.getString("TYPE_NAME")); } * } */ ResultSet rs = metadata.getColumns(null, "%", "company_basic", "%"); System.out.println("表名:" + "company_basic" + "\t\n表字段信息:"); while (rs.next()) { System.out.println("字段名:" + rs.getString("COLUMN_NAME") + "\t字段注释:" + rs.getString("REMARKS") + "\t字段数据类型:" + rs.getString("TYPE_NAME")); } } catch (SQLException e) { e.printStackTrace(); } finally { closeConnection(conn, pst, re); } } /** * 关闭数据库链接 * * @param conn * @param pst * @param re */ public static void closeConnection(Connection conn, PreparedStatement pst, ResultSet re) { if (conn != null) try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (pst != null) try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (re != null) try { re.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) throws IOException { try { query(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
jdbc 表 meta data
猜你喜欢
转载自snowelf.iteye.com/blog/2258603
今日推荐
周排行