Java JDBC-MySQl-don';不显示结果集
在我的代码中,我的最终输出与MySQl控制台输出不同:Java JDBC-MySQl-don';不显示结果集,java,mysql,jdbc,Java,Mysql,Jdbc,在我的代码中,我的最终输出与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.Dr
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控制台的输出,
例如,我希望在执行“use mydb”语句后看到“Database changed”消息。您应该执行以下操作:
while (resultset.next()) {
System.out.println(resultset.getString("somevariable")
}
某些变量只是表示您在表中查找的内容。
另外,我不确定“使用mydb”是否适用于JDBC。
如果使用命令字符串,如
("SELECT NAME FROM TABLE")
那你就得用类似的东西
System.out.println(resultset.getString("NAME")
要在名为“NAME”的表列中查找内容,请使用mydb,它不会生成结果集(它不是查询)。另外,您不应该使用此命令来设置当前数据库,JDBC要求您使用JDBC方法。请参阅java.sql.Connection的javadoc: 注意:配置
连接
时,JDBC应用程序应使用适当的连接
方法,如设置自动提交
或设置事务处理
。当存在可用的JDBC方法时,应用程序不应直接调用SQL命令来更改连接的配置
USE mydb
的等效方法是,调用此方法可确保驱动程序处于一致状态。如果查看MySQL Connector/J中的实际实现,该方法最终会调用USE mydb
,但它也会对连接
对象的状态进行额外的检查和更改
当您已经知道要使用哪个数据库时,只需将其直接包含到连接URL中:
String dbUrl = "jdbc:mysql://localhost/mydb";
类似地,您不应该使用
SHOW TABLES
来获取关于表的信息,而应该使用。在特定于MySQL的命令上使用JDBC方法可以使您的程序更具可移植性。您确定“show tables”是JDBC驱动程序能够理解并返回结果集的语句吗?请尝试使用。如果查询被执行,它将返回布尔值true
。我认为“使用mydb”
永远不会返回ResultSet
@DaveHowes有多确定?是否可能重复?能否解释一些变量请参阅可能重复的链接。这不行。@LuiggiMendoza你确定这就是他的意思吗?@karki64是的,OP想要/需要数据库(架构)中的表。该链接提供了基于连接元数据的信息。非常感谢,我在哪里可以看到mysql控制台和JDBC方法之间的所有等价语句?@Sajjad-我不知道,我通常不使用mysql;)Connection.setCatalog(“mydb”)方法是否返回任何东西?