以MySQL5为例,看看实现过程:
首先为了描述表和列的关系,必须做个简单建模:
表对象、列对象,之间是一对多关系。
public class TableInfoBean {
private String tableName;
private String tableComment;
private List<ColumnBean> columnList=new ArrayList<ColumnBean>();
public class ColumnBean {
private String columnName;
private String columnComment;
private String SqlType;
这个关系很简单,就这么搞定了,用来保存一个表信息。
下面就是如何从数据库读取表信息了。
在这里依赖一个类DatabaseMetaData,这个对象可以从数据库连接来获取。有了它万事大吉了,想知道什么问它即可:
DatabaseMetaData databaseMetaData = conngetMetaData();
//获取所有表
ResultSet tableSet = databaseMetaDatagetTables(null, "%", "%", new String[]{"TABLE"});
//获取tableName表列信息
ResultSet columnSet = databaseMetaDatagetColumns(null, "%", tableName, "%");
上面代码会得到两个结果集,对照DatabaseMetaData 的文档,我们可以通过结果集的列名来获取想要的信息,例如
String tableName = tableSetgetString("TABLE_NAME");
String tableComment = tableSetgetString("REMARKS");
String columnName = columnSetgetString("COLUMN_NAME");
String columnComment = columnSetgetString("REMARKS");
String sqlType = columnSetgetString("DATA_TYPE");
含义很清楚我就不做解释了。
逐个遍历表,然后得到一个TableInfoBean的集合,这个集合就是数据库中所有表的信息了
经过access测试,ok
String url = "jdbc:odbc:test";//最后一个为数据库名
Statement sm = null;
String command = null;
ResultSet rs = null;
String tableName = null;
String cName = null;
String result = null;
String []pram = new String[1];
List <String> tables = new ArrayList<String>();
pram[0] = "table";
BufferedReader input = new BufferedReader(new InputStreamReader(
Systemin));
try {
try {
ClassforName("sunjdbcodbcJdbcOdbcDriver"); // 加载驱动
} catch (ClassNotFoundException e) {
Systemoutprintln("Can not load Jdbc-Odbc Bridge Driver");
Systemerrprint("ClassNotFoundException:");
Systemerrprintln(egetMessage());
}
Connection con = DriverManagergetConnection(url, "admin", "admin"); // 连接到数据库
DatabaseMetaData dm = congetMetaData();
rs = dmgetTables(null, null, null, pram);//查找所有的表
while(rsnext()){
tablesadd(rsgetString(3));
}
rsclose();
for(String tb : tables){
rs = dmgetColumns(null, null, tb, null);//查找当前表的字段
Systemoutprintln("\nthe table is: " + tb);
ResultSetMetaData rsmd = rsgetMetaData();
int len, type;
len = rsmdgetColumnCount();
// Systemoutprintln(len);
for(int i = 1; i <= len; i ++){
type = rsmdgetColumnType(i);
//这里是获取了一个字段类型的int型,需要转化成string的话要做一个swtich,就不转了,你自己看javasqlTypes这个类去
Systemoutprint("\t" + rsmdgetColumnName(i) + ": " + rsmdgetColumnType(i));
}
}
rsclose();
conclose();
// }
} catch (SQLException ex) {
Systemoutprintln("SQLException:");
while (ex != null) {
Systemoutprintln("Message:" + exgetMessage());
ex = exgetNextException();
}
} catch (Exception e) {
Systemoutprintln("IOException");
}
创建数据库连接就可以获取数据库的table created 信息,
提示信息(1 row inserted,Table dropped等信息)这个信息只是在你 *** 作的后面加一个
systemoutprintln("1 row inserted")而1 row inserted这个是你根据程序定义insert行等等
自己可以控制的,例如:
点击按钮( *** 作按钮)-->(按钮事件实现的功能)
Systemoutprintln(row+“row inserted”);row是你插入的行数
Table dropped这个信息(当你点击删除表的按钮时)
Systemoutprintln(tableName+"Table dropped")(如果有tableName的情况下)
显示如下:
tableName Table droppe
java里使用JDBC连接数据库的步骤是:
1 加载数据库驱动: ClassforName("orggjtmmmysqlDriver");
orggjtmmmysqlDriver 是mysql的驱动
oraclejdbcdriverOracleDriver 是oracle的驱动
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passowrd = "123456";
2 获取数据库连接Connection con数= DriverManagergetConnection(url,user,password);
3获取SQL执行器 PreparedStatement prepare = conprepareStatement("SQL语句")
4执行SQL语句,得到结果集 ResultSet result = prepareexecuteQuery();
while(resultnext()){
//读取结果
}
最后不要忘记导入相应的jdbc驱动包
纯工手打字,请采纳哈
以上就是关于JDBC如何获得数据库的约束信息全部的内容,包括:JDBC如何获得数据库的约束信息、请教:JDBC如何得到数据库列的类型、java jdbc 数据库编程 如何获取返回信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)