Java JDBC-MySQl-don';不显示结果集

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

在我的代码中,我的最终输出与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控制台的输出, 例如,我希望在执行“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”)方法是否返回任何东西?