在我的代码中,My finally输出与MySQl控制台输出不一样:
public class d3 {
Connection con;
String dbName = "mydb";
String dbUsername = "root";
String dbPassword = "2323";
String dbUrl = "jdbc:mysql://localhost/";
public d3() {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Find database successfuly");
} catch (Exception e) {
System.err.println("Unable to find and load driver");
System.exit(1);
}
}
public void connectToDB() {
try {
con = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
System.out.println("Connect to database succesfully");
} catch (SQLException e) {
System.out.println("Can not connect to database");
System.exit(1);
}
}
public void excuteSQL() {
String sqlString1 = "use mydb";
String sqlString2 = "show tables";
String result;
try {
Statement st1 = con.createStatement();
ResultSet result1 = st1.executeQuery(sqlString1);
while(result1.next()){
result = result1.getString(dbName);
System.out.println(result1);
}
} catch (SQLException sqle) {
System.out.println("Can not excute sql statement");
}
}
public static void main(String[] args) {
d3 ddd = new d3();
ddd.connectToDB();
ddd.excuteSQL();
}
}
我的输出:
Find database successfuly
Connect to database succesfully
Result set representing update count of 0
但是,我希望是这样的:
Find database successfuly
Connect to database succesfully
Database changed // this is shown in console
我要一步一步地比较mysql控制台和IDE控制台的输出, 例如,我想看到"数据库已更改"执行后的消息"使用mydb"言。
答案 0 :(得分:1)
你应该这样做:
while (resultset.next()) {
System.out.println(resultset.getString("somevariable")
}
某些变量只代表您在表格中寻找的内容。 另外,我不确定“使用mydb”是否适用于JDBC。 如果使用类似
的命令字符串("SELECT NAME FROM TABLE")
然后你必须使用像
这样的东西System.out.println(resultset.getString("NAME")
在名为“NAME”的表列中查找内容。
答案 1 :(得分:1)
您正在执行use mydb
,它不会生成结果集(它不是查询)。此外,您不应使用此命令设置当前数据库,JDBC要求您使用JDBC方法。请参阅java.sql.Connection的javadoc:
注意:配置
Connection
时,JDBC应用程序应使用适当的Connection
方法,例如setAutoCommit
或setTransactionIsolation
。当有可用的JDBC方法时,应用程序不应直接调用SQL命令来更改连接的配置。
相当于USE mydb
为Connection.setCatalog("mydb")
,调用此方法可确保驱动程序处于一致状态。如果你看一下MySQL Connector / J中的实际实现,这个方法最终会调用USE mydb
,但它也会对Connection
对象的状态进行额外的检查和更改。
当您已经知道要使用哪个数据库时,只需将其直接包含在连接URL中:
String dbUrl = "jdbc:mysql://localhost/mydb";
同样,您不应使用SHOW TABLES
来获取有关表的信息,而是使用DatabaseMetaData.getTables()
。在MySQL特定命令上使用JDBC方法可以使您的程序更具可移植性。