jdbc链接数据库,获取表名,字段名和数据

时间:2023-03-08 18:50:49
  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. }