java 获取mysql 某个数据库中所有表及表的列的信息

java 获取mysql 某个数据库中所有表及表的列的信息,第1张

mysql中

有个information_schema的数据

里面有个TABLES的表

这里面就包含了MYSQL

所有表的信息

至于表的字段具体信息我也不太清楚了

你在这个表生成的时候可以把选择框的value设置成对应在数据库表中的id然后选中的时候取这个选择框的value,提交到action的时候在url后面把这个id带过去就能在数据库里面找到这一行的记录了。

两种方式

第一步先执行这个if(rsnext()) 然后是下面的

第一种

rsget(0) 第一个字段

rsget(1)第二个字段

第二种

rsget('name') 此处的字段名称以实际为准

rsget('sex') 此处的字段名称以实际为准

不知道你用的是什么数据库,如果是oracle的话,可以用oracle的JDBC driver,它里面的ResultSetMetaData可以取到表名。

另外一个方法,在oracle里面有很多object,你可以写SQL进行查询,然后得到含有列名(colname)的TableName

俺倒是想到一个土办法,根据列名来获取表名。

其实很简单,首先获取所有的表名,记录下来。有了表名,就可以知道其Meta信息了,可以获取相应的列名。然后把已知的列名在所有列名中遍历,对应的所有表名就可以得到了。

提供一段获取所有表名的代码片断,主要靠DatabaseMetaData:

DatabaseMetaData databaseMetaData = conngetMetaData();

String[] tableType = {"TABLE"};

ResultSet resultSet = databaseMetaDatagetTables(null, null, "%", tableType);

try {

while(resultSetnext()) {

String schemaName = resultSetgetString(2);

String tableName = resultSetgetString(3);

}

} finally {

resultSetclose();

}

以用spring为例:

modeladdAttribute("serviceCenterLevelList",list);

然后页面上

<select class="form-control" style="display:block !important" name="levelcode" id="sleect_lelel" >

#foreach($xxx in $list)

<option value="$!{xxxcode}">$!{xxxtext}</option>

#end

</select>

import javasql;

import javautilArrayList;

import javautilHashtable;

import javautilList;public class Test{ public static void main(String[] args) throws Exception {

// 驱动

String driver = "commysqljdbcDriver";

// 数据库连接

String url = "jdbc:mysql://localhost:3306/test";

// 用户名

String user = "root";

// 数据库密码

String password = "admin";

// 加载驱动

ClassforName(driver);

// 获取链接

Connection connection = DriverManager

getConnection(url, user, password);

// 创建查询声明

PreparedStatement preparedStatement = connection

prepareStatement("select from dept");

// 获取结果

ResultSet resultSet = preparedStatementexecuteQuery();

// 获取各个列的信息

ResultSetMetaData metaData = resultSetgetMetaData();

// 一条数据保存在一个Hashtable 将所有Hashtable存放到list

List<Hashtable<String, Object>> rows = new ArrayList<Hashtable<String, Object>>();

while (resultSetnext()) {

Hashtable<String, Object> row = new Hashtable<String, Object>();

for (int i = 1; i <= metaDatagetColumnCount(); i++) {

// 打印列名

Systemoutprintln(metaDatagetColumnName(i));

rowput(metaDatagetColumnName(i), resultSetgetObject(i));

}

rowsadd(row);

}

resultSetclose();

preparedStatementclose();

connectionclose();

}}

ResultSet

是一个迭代模式的动态连接容器。

迭代模式的容器遍历的时候通常是这样的

while(rsnext()){

//循环内容

}

rsnext()返回值是一个boolean,表示在迭代过程中是否已经到结尾。

直接从statementexcuteQuery()获得的rs默认数据游标在起始数据的前一个位置,调用一遍rsnext()才能指向可能有数据的第一条数据。然后遍历继续,直到迭代集合中再无数据rsnext()返回false;

ps:rsgetRow()表达的意思是结果集在当前游标下共存在多少列,不是rs的size()

在循环体中您将可以获得当前整行数据的各个列的值以及其它信息。

以上就是关于java 获取mysql 某个数据库中所有表及表的列的信息全部的内容,包括:java 获取mysql 某个数据库中所有表及表的列的信息、java中在页面上选中一行后,怎样在action中获取选中行对应的数据库中的这一行的某一列的值、Java编程 如何获取从数据库中获取的一条数据中一个一个数据 啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存