java读取数据库表的列名
2011-03-25 16:36codeif.com
我们写开发文档,不想一个一个字段的复制粘贴,我们能不能使用java把每列的列名,数据类型,长度之类的信息读出,这里我们以读取MySQL数据库为例
参考文章:
http://www.java2s.com/CN/Code/Java/Database-SQL-JDBC/UseDatabaseMetaDatatogettablecolumnnames.htm
代码如下:
package com.codeif;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class ColumnNameTest {
private static String driver = null;
private static String url = null;
private static String user = null;
private static String password = null;
static { // 把读取文件放到静态初始化块,每次执行只加载一次即可,减少读取文件的次数
Properties pro = new Properties();
try {
pro.load(ColumnNameTest.class
.getResourceAsStream("jdbc.properties")); // 从文件中取内容
// 获取信息
driver = pro.getProperty("jdbc.driver");
url = pro.getProperty("jdbc.url");
user = pro.getProperty("jdbc.username");
password = pro.getProperty("jdbc.password");
} catch (Exception e1) {
// e1.printStackTrace();
throw new RuntimeException(e1);
}
}
public static Connection getConnection() {
// 一下信息放到了文件 jdbc.properties,便于切换数据库
Connection conn = null;
try {
Class.forName(driver); // 步骤一
conn = DriverManager.getConnection(url, user, password);// 步骤二
} catch (Exception e) {
// e.printStackTrace();
throw new RuntimeException(e);
}
return conn;
}
public static void close(ResultSet rs, Statement stmt, Connection conn) { // 步骤六
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
DatabaseMetaData metadata = conn.getMetaData();
ResultSet rs = metadata.getColumns(null, null, "tableName", null);
while (rs.next()) {
String name = rs.getString("COLUMN_NAME");
String type = rs.getString("TYPE_NAME");
int size = rs.getInt("COLUMN_SIZE");
System.out.println("Column name: [" + name + "]; type: [" + type
+ "]; size: [" + size + "]");
}
close(rs, null, conn);
}
}
类的相同目录下放一个jdbc.properties文件,内容如下
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=root
