1. import java.sql.Connection;
  2. import java.sql.DatabaseMetaData;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.ResultSetMetaData;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.sql.Types;
  9. //jdbc链接数据库,获取表名,字段名和数据
  10. public class TestMysql {
  11. public static void main(String[] args) throws Exception {
  12. String driver = "com.mysql.jdbc.Driver";
  13. String url = "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true";
  14. String user = "root";
  15. String password = "mysql0774mysql";
  16. Class.forName(driver);
  17. Connection conn = DriverManager.getConnection(url, user, password);
  18. if (!conn.isClosed())
  19. System.out.println("Succeeded connecting to the Database!");
  20. else
  21. System.err.println("connect filed");
  22. // 获取所有表名
  23. Statement statement = conn.createStatement();
  24. getTables(conn);
  25. ResultSet resultSet = statement
  26. .executeQuery("select * from help_keyword");
  27. // 获取列名
  28. ResultSetMetaData metaData = resultSet.getMetaData();
  29. for (int i = 0; i < metaData.getColumnCount(); i++) {
  30. // resultSet数据下标从1开始
  31. String columnName = metaData.getColumnName(i + 1);
  32. int type = metaData.getColumnType(i + 1);
  33. if (Types.INTEGER == type) {
  34. // int
  35. } else if (Types.VARCHAR == type) {
  36. // String
  37. }
  38. System.out.print(columnName + "\t");
  39. }
  40. System.out.println();
  41. // 获取数据
  42. while (resultSet.next()) {
  43. for (int i = 0; i < metaData.getColumnCount(); i++) {
  44. // resultSet数据下标从1开始
  45. System.out.print(resultSet.getString(i + 1) + "\t");
  46. }
  47. System.out.println();
  48. }
  49. statement.close();
  50. conn.close();
  51. }
  52. public static String convertDatabaseCharsetType(String in, String type) {
  53. String dbUser;
  54. if (in != null) {
  55. if (type.equals("oracle")) {
  56. dbUser = in.toUpperCase();
  57. } else if (type.equals("postgresql")) {
  58. dbUser = "public";
  59. } else if (type.equals("mysql")) {
  60. dbUser = null;
  61. } else if (type.equals("mssqlserver")) {
  62. dbUser = null;
  63. } else if (type.equals("db2")) {
  64. dbUser = in.toUpperCase();
  65. } else {
  66. dbUser = in;
  67. }
  68. } else {
  69. dbUser = "public";
  70. }
  71. return dbUser;
  72. }
  73. private static void getTables(Connection conn) throws SQLException {
  74. DatabaseMetaData dbMetData = conn.getMetaData();
  75. // mysql convertDatabaseCharsetType null
  76. ResultSet rs = dbMetData.getTables(null,
  77. convertDatabaseCharsetType("root", "mysql"), null,
  78. new String[] { "TABLE", "VIEW" });
  79. while (rs.next()) {
  80. if (rs.getString(4) != null
  81. && (rs.getString(4).equalsIgnoreCase("TABLE") || rs
  82. .getString(4).equalsIgnoreCase("VIEW"))) {
  83. String tableName = rs.getString(3).toLowerCase();
  84. System.out.print(tableName + "\t");
  85. // 根据表名提前表里面信息:
  86. ResultSet colRet = dbMetData.getColumns(null, "%", tableName,
  87. "%");
  88. while (colRet.next()) {
  89. String columnName = colRet.getString("COLUMN_NAME");
  90. String columnType = colRet.getString("TYPE_NAME");
  91. int datasize = colRet.getInt("COLUMN_SIZE");
  92. int digits = colRet.getInt("DECIMAL_DIGITS");
  93. int nullable = colRet.getInt("NULLABLE");
  94. // System.out.println(columnName + " " + columnType + " "+
  95. // datasize + " " + digits + " " + nullable);
  96. }
  97. }
  98. }
  99. System.out.println();
  100. // resultSet数据下标从1开始 ResultSet tableRet =
  101. //conn.getMetaData().getTables(null, null, "%", new String[] { "TABLE" });
  102. //while (tableRet.next()) {
  103. //  System.out.print(tableRet.getString(3) + "\t");
  104. //}
  105. //System.out.println();
  106. }
  107. }

jdbc链接数据库,获取表名,字段名和数据的更多相关文章

  1. MySql 获取表的字段名

    mysql安装成功后可以看到已经存在mysql.information_schema和test这个几个数据库,information_schema库中有一个名为COLUMNS的表,这个表中记录了数据库 ...

  2. 获取sqlserver数据库中所有库、表、字段名的方法

    获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...

  3. Sqlserver列出所有数据库名,表名,字段名

    Sqlserver列出所有数据库名,表名,字段名   1.获取所有数据库名:   ? 1 SELECT Name FROM Master..SysDatabases ORDER BY Name   注 ...

  4. 4、原生jdbc链接数据库常用资源名

    原生jdbc链接数据库要素:#MySql:String url="jdbc:mysql://localhost:3306/数据库名";String name="root& ...

  5. [SQL]某数据库中查出包含 字段名 的所有表名

    --利用SQL语句来查询字段所在的表 --从某数据库中查出包含 字段名 字段的所有表名 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE ...

  6. KO ------- 表中字段名和实体类属性名不一致

    -----------------------siwuxie095 KO ------- 表中字段名和实体类属性名不一致 如果数据库表中的字段名和实体类的属性名不一致,那么在查询时, 相应字段的结果就 ...

  7. postgress数据库 出现大写字母 字段名但是提示说不存在

    select BSK001 from dbdata 报错: column "bsk001" of relation "dbdata" does not exis ...

  8. 数据库的表的字段名称与实体类(pojo)不对应解决方案

    数据库的表的字段名称与实体类(pojo)不对应解决方案 数据库表 ![image-20200429130200825](C:%5CUsers%5C%E6%9E%97%E6%AD%A3%E6%98%8E ...

  9. mysql数据库user表host字段的%问题

    搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...

随机推荐

  1. hbase计数器

    1 计数器 计数器可以方便.快速地进行计数操作,而且避免了加锁等保证了原子性的操作.   1.1 Java API 操作 HBase 计数器 public Result increment(final ...

  2. 集群负载均衡LVS

    电子商务已经成为生活中不可缺少的一部分,给用户带来了方便和效率.随着计算机硬件的 发展,单台计算机的性能和可靠性越来越高.网络的飞速发展给网络宽带和服务器带来巨大的 挑战,网络宽带的增长速度远远高于内 ...

  3. Fiddler2 java代码拦截设置

    jre -DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 Or: jre -DproxySet=true -Dproxy ...

  4. Android——FileOutputStream与openFileOutput()的区别分析【第一个用于文件存储,第二个用于SD卡存储】【转】

    本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...

  5. windows server 2003中用系统自带工具调整磁盘分区大小

    先在需要扩展的右边留出未分配的磁盘空间,可以通过 我的电脑 右键 管理 磁盘管理来操作 首先 进入cmd界面 然后输入Diskpart 这个时候进入DISKPART> 界面 然后你 先选择磁盘一 ...

  6. Integer与int有什么区别?

      Integer与int有什么区别?       由于面试的时候问到这个问题,所以就网上百度一下,发现一个大神说得非常好,非常清楚,所有就博文复制过来供“自己学习”.(这不是原文,原文底下有链接) ...

  7. [mysql] mysql-myibatis-整理

    ==================================== insert ========================================== 语句1 <inser ...

  8. C语言写的trim()函数

    C语言的标准库中缺少对字符串进行操作的trim()函数,使用起来有些不便,可以使用利用 strlen 和 isspace 函数以及指针来自己写一个. 1.strlen 函数 原型:extern int ...

  9. android Fragment 笔记

    Fragment多用于平板中,Fragment当成Activity的一个界面的一个组成部分,Fragment有自己的生命周期,但是必须依托在Activity中. 参考链接 https://develo ...

  10. Ubuntu server版上使用命令行操作VPNclient

    Ubuntu server版上使用命令行操作VPNclient VPN,虚拟专用网络,这个技术还是非常有用的.近期笔者參与的项目中就使用上了VPN,大概情况是这种.有两个开发团队,在异地,代码服务器在 ...