java处理数据库时遇到个小问题:

2025-01-24 05:24:00
推荐回答(4个)
回答1:

一看就知道你是个不看API的人。
虽然jdbc提供了数据库通用方法,但是不同的数据库需要设置不同的参数。
Access没人用这种数据库,我不讨论。oracle数据库与其他数据不同,它不存在catalog,所以你调用jdbc的方法的时候要注意参数。
如果是oracle数据库,要获取它的所有表,是通过模式去加载,也就是当前登录的用户名。
conn=DBUtils.getConnection();
DatabaseMetaData dbmd=conn.getMetaData();
DatabaseMetaData提供了如下方法用来获取数据库表的定义
//检索数据库中表的类型
ResultSet getTables(
String catalog,
String schemaPattern,
String tableNamePattern,
String[] types
)
throws SQLException
如果是oracle数据库,应该写成getgetTables(null,"用户名","这里不限制为null","TABLE");
这就是Oracle的,其他数据库应该getTables(catalog,null,null,"TABLE");
catalog是你连接的数据库名conn.getCatalog获得。
types = new String[]{"TABLE","VIEW"}这样表示视图和索引都加载。tableNamePattern可以不写,主要是控制加载什么表,可以写成一个匹配表达式,比如什么不包含tmp的,也就是不加载临时表。不看API永远学不会东西。
获取所有字段:
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from " + tableName);
ResultSetMetaData meta = rs.getMetaData();
int fdcount = meta.getColumnCount();
int i = 1;
while (i <= fdcount) {
String name = meta.getColumnName(i);
String type = meta.getColumnTypeName(i).toUpperCase();
int size = meta.getColumnDisplaySize(i);
int isNull = meta.isNullable(i);

回答2:

你用的是什么数据库?SQL Server 2005? MySQL? Orcale?

回答3:

2楼正解!!!

回答4:

什么数据库?