SQL文の道を実行します

JDBCだけではなく、クエリを実行し、あなたはまた、JDBC経由でデータベースを最大限に制御することができ、そのようなSQL文としてDDL、DMLを実行することができます。

 

またはexecuteLargeUpdateメソッドを使用してDDLとDMLステートメントを実行するためのexecuteUpdateを使用します。

 現在のmysqlデータベースのヴァンexecuteUpdateメソッドによって表されるデータベースを作成するプログラムを書きます:

パブリック クラスJDBC { 
    String型ドライバー; 
    文字列のURL; 
    文字列ユーザー; 
    文字列のパスワード; 
    
    // データベースが対応するテーブルを持っているかどうかをチェックするには、返されたトゥーレがあり、falseに戻らない
    公共 ブールtableIsExists(文字列tableNameの){
         試み{ 
            接続connは = のDriverManagerを。 getConnection(URL、ユーザ、パスワード); 
            声明 = conn.createStatement(); 
            文字列のSQL =は"TABLE_SCHEMA = 'テスト'のINFORMATION_SCHEMA.TABLES TABLE_NAMEからSELECT" ; 
            のResultSetたresultSet = Statement.executeQuery(SQL);
             ながら、(resultSet.next()){ 
                文字列queryTableName = resultSet.getString(1 )。
                System.out.println(queryTableName)。
                もし(queryTableName.equals( "tb_test" )){
                     戻り 
                } 
            } 
        } キャッチ(例外e)は{}
         を返す 
    } 
    
    公共 ボイドcreateTableJDBC(文字列tableNameの){
         試み{ 
            接続CONN = たDriverManager.getConnection(URL、ユーザ、パスワード)。
            声明 =conn.createStatement();
             IF(!tableIsExists(tableNameの)){ 
                System.out.printlnは( "現在のデータベースがありません" + tableNameの+ + tableNameの+ "データベーステーブル" "フォーム、作成します" ); 
                文字列のSQLが = "表の作成" + + tableNameの"(" 
                        + "test_id AUTO_INCREMENT int型主キー、" 
                        + "TEST_NAME VARCHAR(255)、" 
                        + "test_descテキスト)" ;
                 int型の結果= Statement.executeUpdate(SQL); 
            } { 
                System.out.printlnは(「現在データベースは、「+ tableNameの+」の形を持っている、 "作成されません。+ tableNameの+ "データベーステーブル" ); 
            }
            
        } キャッチ(例外e){} 
    } 
    
    パブリック 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ 
        JDBCのJDBC = 新しいJDBC()。
        
        jdbc.initParam( "mysql.properties" ); 
        jdbc.createTableJDBC( "tb_test" ); 
    } 
}

 次のように最初の結果は以下のとおりです。

tb_adminuserの
tb_userは
現在のところtb_testデータベーステーブルは、データベーステーブルがtb_testを作成されません

 この第二の結果は、(そうでない場合、次に動作MySQLデータ)以下の通りであります:

tb_adminuser 
tb_test 
現在のデータベースは、データベーステーブルtb_testを作成しません、tb_testフォームを持っています

 

 プログラミングは、上記の表に新しいデータを追加します。

パブリック クラスJDBC { 
    文字列ドライバと、
    文字列のURL。
    文字列のユーザー。
    文字列のパスワード。
    公共 のボイドinitParam(文字列paramFile){
         しようと{ 
            プロパティの小道具は = 新しいプロパティ(); 
            props.load(新しいFileInputStreamを(paramFile)); 
            ドライバ = props.getProperty( "ドライバ" )。
            URL = props.getProperty( "URL" ); 
            ユーザー = props.getProperty( "ユーザ" )。
            パスワード = props.getProperty( "パスワード" );
            
        } キャッチ(例外E){} 
    } 
    
    公共 のボイドは、addData(表文字列、文字列のSQL){
         試み{ 
            接続connは = したDriverManager.getConnection(URL、ユーザ、パスワード); 
            声明 = conn.createStatement();
             int型 resultRow = ステートメント。 executeUpdate(SQL)
            のSystem.out.println( +テーブル+「に」+「表1には、衝撃の行の数でデータテーブルを追加」resultRow); 
        } キャッチ(例外E){} 
    } 
    
    パブリック 静的 ボイドメイン(文字列[]引数){
         //TODO自動生成されたメソッドスタブ 
        のJDBC JDBC = 新しいJDBC(); 

        jdbc.initParam( "mysql.properties" ); 
        文字列テーブル =「tb_test」
        文字列のSQL = +テーブル+ "挿入""(TEST_NAME、test_desc)の値( 'HJL'、 '0');" ; 
        jdbc.addData(テーブル、SQL)。
    } 
}

 効果を実行し、次のとおりです。

Tb_testデータテーブルに追加、テーブルの行の数によって影響されます

 すなわち、のexecuteUpdate(文字列のSQL)を使用して試験することができる動作テーブルの内容は、したがって、2つのコード0を介して戻されるので、代わりに値DDLステートメントの、ことを除いて、データベースDMLステートメントDDLステートメント動作であります行およびDMLステートメントの数は、このように、リターンフォームの内容に影響を与える、コンテンツ動作テーブルである;.

 

executeメソッドを使用してSQL文を実行します。

 唯一のSQL文の種類を知らない、保証するためには、execute()メソッドは、ほぼすべてのSQLステートメントを実行することができますが、SQL文のexecuteQuery()メソッドまたはのexecuteUpdate()メソッドを実行するために、通常は、SQL文を実行あまりにも面倒であるの声明間違っていない、それはexecute()メソッドを使ってSQL文を実行するのが最善です。

 実行使用します()の戻り値は、取得したクエリを実行するResultSetオブジェクトを取得する方法、およびそれを得るために実行int型の値DDLやDML文を得るために、どのようにして、ブールのですか?このような状況に鑑みて、ステートメントは、次の2つの方法が用意されています。

  1.getResultSet():このメソッドは、ステートメントが返されるクエリーResultSetオブジェクトを実行して返します。

  2. getUpdateCountは():このメソッドは、行の数に影響statementDDL、DMLステートメントを返します。

 次の手順では、SQL文を使用して、任意なステートメントを実行するには、execute()メソッドを示しています。

パブリック クラスJDBC { 
    
    // 使用実行方法进行对表查询
    公共 無効queryByExecuteMethod(文字列テーブル){
         しようと{ 
            文字列のSQLは + "SELECT * FROM" = 表。
            ブール B = のStatement.execute(SQL)。
            もし(B){ 
                するSystem.out.println( "方法を実行返回" + B)。
                ResultSetの結果 = statement.getResultSet()。
                int型のカウント= 0 ;
                一方、(result.next()){ 
                    カウント ++  
                } 
                のSystem.out.println( + "合計が尋ね" +カウント"レコード" ); 
            }  {するSystem.out.println(+ "メソッドが戻る実行" Bを);} 
        } キャッチ(例外E){} 
    } 
    
    // 実行DMLはテーブルの内容を削除する使用方法
    の公共 のボイドdeleteDataByExecuteMethod(文字列テーブル){
         試み{ 
            文字列のSQLが = + "から削除" ;テーブル
             ブール B = のStatement.execute(SQL);
             IF(!{B)
                のSystem.outを。 println(「メソッドの戻りを実行」+ B)。
                System.out.println(表 + "影響を受けた行の数は次のとおりです。「+Statement.getUpdateCount()); 
            }  {するSystem.out.println( "実行メソッドが戻る" + B);} 
        } キャッチ(例外E){} 
    } 
    
    // 使用法は、DDL削除を実行しますテーブル
    公共 無効dropTableByExecuteMethod(文字列テーブル){
         試み{ 
            文字列のSQL + = "表のドロップ" テーブル;
             ブール B = のStatement.execute(SQL);
             IF(!B){ 
                System.out.printlnは( "Executeメソッドの戻り" + B); 
                System.out.printlnは(表+ "受影响行数为:" + statement.getUpdateCount()); 
            }  {するSystem.out.printlnは( "実行方法返回" + B);} 
        } キャッチ(例外e){} 
    } 
    
    接続CONN = NULL ; 
    声明 = nullを公共JDBC(文字列paramFile){
         しようと{ 
            プロパティの小道具は = 新しいプロパティ(); 
            props.load(新しいFileInputStreamを(paramFile)); 
            列ドライバ = props.getProperty(「ドライバ」)。
            文字列のURL = props.getProperty( "URL" ); 
            文字列のユーザー= props.getProperty( "ユーザ" )。
            文字列のパスワード = props.getProperty( "パスワード" ); 
            CONN = したDriverManager.getConnection(URL、ユーザー、パスワード); 
            声明 = conn.createStatement(); 
            
        } キャッチ(例外e){} 
    } 
    
    パブリック 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ

        文字列テーブル =「tb_test」
        JDBC jdbc_2 = 新しい JDBC( "mysql.properties" );
        jdbc_2.queryByExecuteMethod(表)。
        jdbc_2.deleteDataByExecuteMethod(表)。
        jdbc_2.dropTableByExecuteMethod(表)。
    } 
}

 クエリが真の値を返す上記の手順で、execute()メソッドは、それぞれクエリ、3つのSQL文を実行使用して、DMLステートメントのDDLステートメントで、オブジェクトは、真の値に応じたResultSet Statementオブジェクトから取得し、そしてに従って偽の値、StatementオブジェクトからgetUpdateCountは()メソッドの値を取得し、効果を実行することです。

方法は、真の実行返す
クエリが2つのレコードの合計
方法を実行するがfalseを返す
影響を受ける行数tb_testある: 2 
メソッドを実行falseを返す
行数の影響によってtb_testである: 0

 

おすすめ

転載: www.cnblogs.com/hjlin/p/11440060.html