JDBC如何获得数据库的约束信息

JDBC如何获得数据库的约束信息,第1张

以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 数据库编程 如何获取返回信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9745805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存