jdbc链接数据库名,获取表名、字段名和数据
2017-07-20 15:11
477 查看
这里以mysql 为例,最近项目需要外部异表数据源的载入,需要自动获取连接数据的库名,数据表名,字段名和数据。现在做个笔记。
想获取库里面的数据表名,字段名和数据,网上也有很多,怎么写看个人爱好。
获取该连接的库名,由于没有什么资料,我查了也没有结果,主要是接受的字符串不知道是什么,只是一个地址。通过反复试验,用detabase居然可以显示了。
如果只是查询库名的话,url地址可以不用写哪个库 url = “jdbc:mysql://127.0.0.1:3306
直接上整套代码:
想获取库里面的数据表名,字段名和数据,网上也有很多,怎么写看个人爱好。
获取该连接的库名,由于没有什么资料,我查了也没有结果,主要是接受的字符串不知道是什么,只是一个地址。通过反复试验,用detabase居然可以显示了。
如果只是查询库名的话,url地址可以不用写哪个库 url = “jdbc:mysql://127.0.0.1:3306
String sql1 = "SHOW DATABASES"; ResultSet resultSouceSet = statement .executeQuery(sql1); while(resultSouceSet.next()){ System.out.println(resultSouceSet.getString("database")); System.out.println(); }
直接上整套代码:
package ; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.sql.Types; import java.util.HashMap; import java.util.Properties; /** * 查询库中的表 以及表结构数据 * @author Administrator * */ public class ConnTest { public static void main(String[] args) throws Exception { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/demo"; String user = "root"; String password = "root"; Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, password); if (!conn.isClosed()) System.out.println("Succeeded connecting to the Database!"); else System.err.println("connect filed"); // 获取所有表名 Statement statement = conn.createStatement(); //获取该连接下所有的库名 String sql1 = "SHOW DATABASES"; ResultSet resultSouceSet = statement .executeQuery(sql1); while(resultSouceSet.next()){ System.out.println(resultSouceSet.getString("database")); System.out.println(); } getTables(conn); ResultSet resultSet = statement .executeQuery("select * from table1"); // // 获取列名 ResultSetMetaData metaData = resultSet.getMetaData(); for (int i = 0; i < metaData.getColumnCount(); i++) { // resultSet数据下标从1开始 String columnName = metaData.getColumnName(i + 1); int type = metaData.getColumnType(i + 1); if (Types.INTEGER == type) { // int } else if (Types.VARCHAR == type) { // String } System.out.print(columnName + "\t"); } System.out.println(); // 获取数据 while (resultSet.next()) { for (int i = 0; i < metaData.getColumnCount(); i++) { // resultSet数据下标从1开始 System.out.print(resultSet.getString(i + 1) + "\t"); } System.out.println(); } statement.close(); conn.close(); } public static String convertDatabaseCharsetType(String in, String type) { String dbUser; if (in != null) { if (type.equals("oracle")) { dbUser = in.toUpperCase(); } else if (type.equals("postgresql")) { dbUser = "public"; } else if (type.equals("mysql")) { dbUser = null; } else if (type.equals("mssqlserver")) { dbUser = null; } else if (type.equals("db2")) { dbUser = in.toUpperCase(); } else { dbUser = in; } } else { dbUser = "public"; } return dbUser; } private static void getTables(Connection conn) throws SQLException { DatabaseMetaData dbMetData = conn.getMetaData(); // mysql convertDatabaseCharsetType null ResultSet rs = dbMetData.getTables(null, convertDatabaseCharsetType("root", "mysql"), null, new String[] { "TABLE", "VIEW" }); while (rs.next()) { if (rs.getString(4) != null && (rs.getString(4).equalsIgnoreCase("TABLE") || rs .getString(4).equalsIgnoreCase("VIEW"))) { String tableName = rs.getString(3).toLowerCase(); System.out.print("tableName: "+tableName + "\t"); // 根据表名提前表里面信息: ResultSet colRet = dbMetData.getColumns(null, "%", tableName, "%"); System.out.println(); while (colRet.next()) { String columnName = colRet.getString("COLUMN_NAME"); String columnType = colRet.getString("TYPE_NAME"); int datasize = colRet.getInt("COLUMN_SIZE"); int digits = colRet.getInt("DECIMAL_DIGITS"); int nullable = colRet.getInt("NULLABLE"); System.out.println(columnName + " " + columnType + " "+ datasize + " " + digits + " " + nullable); } } } System.out.println(); // resultSet数据下标从1开始 ResultSet tableRet = conn.getMetaData().getTables(null, null, "%", new String[] { "TABLE" }); while (tableRet.next()) { System.out.print(tableRet.getString(3) + "\t"); } System.out.println(); } }
相关文章推荐
- jdbc链接数据库,获取表名,字段名和数据
- jdbc链接数据库,获取表名,字段名和数据
- jdbc链接数据库,获取表名,字段名和数据
- JAVA通过JDBC链接数据库获取数据(二)单元测试增删改查
- JAVA通过JDBC链接数据库获取数据(一)
- JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL
- jdbc 通过rs.getString()获取数据库中的时间字段问题
- JDBC获取数据库表字段信息
- JDBC获取数据表字段名、注释等信息
- 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类
- JDBC数据类型与数据库字段对应表——mysql篇
- Mybatis的数据库字段类型JDBCType和java基本数据类型转换说明
- 【Jmeter】JDBC获取数据库表数据作为参数
- delphi中更新表字段update BLOB型数据(image)/获取图片转成BLOB型存入数据库
- jdbc操作数据库并自动获取字段类型
- JDBC获取数据库链接
- jdbc操作数据库并自动获取字段类型
- 通过JDBC获取数据库表元数据
- JDBC如何与数据库连接获取数据(原理+代码)
- 数据库-获取表中该字段的数据类型