0

私のコードでは、私の最終的な出力は、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 コンソールからの出力を比較しています。

4

2 に答える 2

1

やったほうがいい:

while (resultset.next()) {

System.out.println(resultset.getString("somevariable")
}

一部の変数は、テーブルで探しているものを表すだけです。また、「use mydb」が JDBC で機能するかどうかもわかりません。次のようなコマンド文字列を使用する場合

("SELECT NAME FROM TABLE")

次に、次のようなものを使用する必要があります

System.out.println(resultset.getString("NAME")

「NAME」という名前のテーブル列にあるものを探します。

于 2013-06-21T16:41:39.863 に答える
1

を実行use mydbしていますが、結果セットは生成されません (クエリではありません)。また、このコマンドを使用して現在のデータベースを設定しないでください。JDBC では、JDBC メソッドを使用する必要があります。java.sql.Connection の javadoc を参照してください。

: を構成する場合Connection、JDBC アプリケーションはやConnectionなどの適切なメソッドを使用する必要があります。使用可能な JDBC メソッドがある場合、アプリケーションは SQL コマンドを直接呼び出して接続の構成を変更しないでください。setAutoCommitsetTransactionIsolation

USE mydbisと同等でConnection.setCatalog("mydb")、このメソッドを呼び出すと、ドライバーが一貫した状態にあることが確認されます。MySQL Connector/J の実際の実装を見ると、このメソッドは最終的に を呼び出しますがUSE mydb、追加のチェックとConnectionオブジェクトの状態の変更も行います。

使用するデータベースがわかっている場合は、それを接続 URL に直接含めます。

String dbUrl = "jdbc:mysql://localhost/mydb";

同様に、SHOW TABLESテーブルに関する情報を取得するために を使用するべきではありませんDatabaseMetaData.getTables()。代わりに使用してください。MySQL 固有のコマンドで JDBC メソッドを使用すると、プログラムの移植性が向上します。

于 2013-06-22T07:17:30.523 に答える