1

新年明けましておめでとうございます。

サーバー内のすべてのデータベースを取得し、すべてのテーブルにアクセスし、そこにある列に関する情報を収集する JDBC プログラムを開発しています。最後に、テーブル内の情報のすべての行を行として追加したいと思います。私のプログラムは正しくコンパイルおよび実行されますが、テーブルは常に空のセットを返します。毎回どのようなクエリが構築されているかを出力してみました。次に、それを端末にコピーして貼り付け、行を追加するだけです! 何が欠けているのか理解できません。

private Connection connection = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
connection.setAutoCommit(false);
private Statement statement = connection.createStatement();
String sql = "INSERT INTO collection VALUES ('"+dbName+"', '"+tName+"', '"+fName+"')";
System.out.println(sql);
statement.executeUpdate(sql);

出力コンソール:

    INSERT INTO collection VALUES ('information_schema', 'INNODB_BUFFER_POOL_STATS', 'PAGES_CREATE_RATE')
    INSERT INTO collection VALUES ('information_schema', 'INNODB_BUFFER_POOL_STATS', 'PAGES_WRITTEN_RATE')
    INSERT INTO collection VALUES ('information_schema', 'INNODB_BUFFER_POOL_STATS', 'NUMBER_PAGES_GET')
    INSERT INTO collection VALUES ('information_schema', 'INNODB_BUFFER_POOL_STATS', 'HIT_RATE')
.
.
.
4

1 に答える 1

3

トランザクションの使用を見てください。自動コミットがオフになっているため、最初にトランザクションを開始する必要があり(自動コミットをfalseに設定するだけでトランザクションが開始される場合があります。JDBCのドキュメントを確認してください)、完了したらトランザクションをコミットする必要があります。自動コミットをオフにすると、トランザクションを明示的にコミットしない限り、何も保存されません。

于 2012-12-31T12:19:19.047 に答える