而且这些表因为都是一些我没有去判断并且转换表的字段,全部都报错;
这些是获取数据库表的源码/
ackage com.sorm.core;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import com.sorm.bean.TableInfo;
import com.sorm.bean.CloumnInfo;
/**
* 负责管理数据库中所有表结构和类结构的关系
*
* @author Administrator
*
*/
public class TableContext {
/**
* 表名为key,表信息对象为value
*/
public static Map<String, TableInfo> tables = new HashMap<String, TableInfo>();
/**
* 将po的class对象和表信息对象关联起来,便于重用!
*/
public static Map<Class<?>, TableInfo> poClassTableMap = new HashMap<Class<?>, TableInfo>();
private TableContext() {
}
static {
try {
// 初始化获得表的信息
Connection con = DBManager.getConn("root","mysql");
DatabaseMetaData dbmd = con.getMetaData();
ResultSet tableRet = dbmd.getTables(null, "%", "%", new String[] { "TABLE" });
while (tableRet.next()) {
String tableName = (String) tableRet.getObject("TABLE_NAME");
TableInfo ti = new TableInfo(tableName,new ArrayList<CloumnInfo>(),new HashMap<String,CloumnInfo>());
tables.put(tableName, ti);
ResultSet set = dbmd.getColumns(null, "%", tableName, "%"); // 查询表中的所有字段
while (set.next()) {
CloumnInfo ci = new CloumnInfo(set.getString("COLUMN_NAME"), set.getString("TYPE_NAME"), 0);
ti.getColumns().put(set.getString("COLUMN_NAME"), ci);
}
ResultSet set2 = dbmd.getPrimaryKeys(null, "%", tableName); // 查询t_user表中的主键
while (set2.next()) {
CloumnInfo ci2 = (CloumnInfo) ti.getColumns().get(set2.getObject("COLUMN_NAME"));
ci2.setKeyType(1); // 设置为主键类型
ti.getPrikeys().add(ci2);
}
if (ti.getPrikeys().size() > 0) { // 取唯一主键。。方便使用。如果是联合主键。则为空!
ti.setOnlyPriKey(ti.getPrikeys().get(0));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
<p>可能是你的代码里面没有指定库名,导致获取了 sys 或者 mysql 库中的表</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。