程序运行后无异常,但没有显示出表名(Program runs without exception b

2019-09-20 08:49发布

我有几个DB在mysql和他们都包含有一些列的一些表。 我从一个堆栈溢出的答案下面的代码。 答案是: 我如何检测SQL表的在Java中存在呢?

该代码给出了输出 -

Driver Loaded.
Got Connection.

码-

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Main {
  public static void main(String[] args) throws Exception {
DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString(3));
}  }

  static Connection conn;

  static Statement st;

  static {
try {
  // Step 1: Load the JDBC driver.
  System.out.println("Driver Loaded.");
  // Step 2: Establish the connection to the database.
  String url = "jdbc:mysql://localhost:3306/";

  conn = DriverManager.getConnection(url, "cowboy", "123456");
  System.out.println("Got Connection.");

  st = conn.createStatement();
} catch (Exception e) {
  System.err.println("Got an exception! ");
  e.printStackTrace();
  System.exit(0);
}
  }
}

Answer 1:

在你的代码只

System.out.println("Driver Loaded.");

这是不够的。 你必须先加载驱动程序!

 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("Driver Loaded.");

我很惊讶,这个工程

conn = DriverManager.getConnection(url, "cowboy", "123456");

和你来这行代码。

System.out.println("Got Connection.");

用下面的代码,它会去,但你不会得到表的列表

static {
    try {
      // Step 1: Load the JDBC driver.
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("Driver Loaded.");
      // Step 2: Establish the connection to the database.
      String url = "jdbc:mysql://localhost";

      conn = DriverManager.getConnection(url,"user","passw");
      System.out.println("Got Connection.");
      ....
      }
}

正确设置数据库名称

static {
       try {
       // Step 1: Load the JDBC driver.
       Class.forName("com.mysql.jdbc.Driver");
       System.out.println("Driver Loaded.");
       // Step 2: Establish the connection to the database.
       String url = "jdbc:mysql://localhost/myDataBase";
       conn = DriverManager.getConnection(url,"user","passw");
       System.out.println("Got Connection.");
       ....
       }
}

你可以看到你的MYDATABASE表的列表。



Answer 2:

该代码用于显示特定数据库的表中,所有数据块的不是所有的表。 你不会在你指定任何数据库url字符串因此没有显示。

如果您在仔细查看链接用来回答这个链接的问题,你可以看到String url = "jdbc:hsqldb:data/tutorial"; 所以,你必须先连接到数据库。

PS:您可能需要如果你jdbc4,使用使用驱动程序之前加载驱动程序: Class.forName("com.mysql.jdbc.Driver"); 并确保驱动程序可在类路径中。



文章来源: Program runs without exception but shows no table names
标签: java mysql jdbc