我在mysql中有几个DB,并且它们都包含一些带有几列的表。我从堆栈溢出答案中得到了下面的代码。 答案是在: How can I detect a SQL table's existence in 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);
}
}
}
我从来没有在我的代码中使用Class.forName(“xxxx”)。我总是添加驱动程序jar文件来构建路径和我的代码工作。这是一个很好的做法吗? – 2012-07-28 22:07:31
@sweetdreams如果您在jdbc4之前使用驱动程序,则必须:“在类路径中找到的任何JDBC 4.0驱动程序都会自动加载。 (但是,您必须使用方法Class.forName手动加载JDBC 4.0之前的任何驱动程序。)(http://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html) – 2012-07-28 23:48:00
@sweetdreams由你的主要问题在于你必须在url中指定你想要连接的数据库。 – 2012-07-28 23:50:02