JDBCの違いは、ステートメント(PreparedStatementを)プリコンパイルし、ステートメントを比較し、実行し、ののexecuteUpdate

 

などと声明、PreparedStatementのSQLステートメントが実行される
ステートメントを作成異なり、SQLステートメントのPreparedStatement作成するために応じて
添加することを、それがパラメータを設定することにより可能である、むしろスプライシングステートメントとして文字列を使用してより適切な値を割り当てます

インポートのjava.sql.Connection;
インポートのjava.sql.DriverManager。
インポートのjava.sql.PreparedStatement;
輸入ます。java.sql.SQLException; 
    
パブリック クラスTestJDBC {
     公共 静的 ボイドメイン(文字列[]引数){
         試みる{ 
            Class.forNameの( "はcom.mysql.jdbc.Driverを" )。
        } キャッチ(ClassNotFoundExceptionが電子){ 
            e.printStackTrace(); 
        } 
  
        文字列のSQL = "ヒーロー値を挿入(ヌル、、、???)" 試します(接続C =したDriverManager.getConnection( "JDBC:MySQLの://127.0.0.1:?3306 / how2java characterEncoding = UTF-8"、 "根"、 "ADMIN" );
             // SQL文によるとPreparedStatementの作成 
            にPreparedStatement PS = C .prepareStatement(SQL); 
        ){ 
             
            // 設定パラメータ 
            ps.setString(1、 "コムギ" ); 
            ps.setFloat( 2、313.0f ); 
            ps.setInt( 3、50 );
             //は実行
            ps.executeを( ); 
  
        } キャッチ(のSQLException E){
             // TODO自動生成されたブロックキャッチ
             e.printStackTrace();
        } 
    
    } 
}

声明では、貧しい文字列の連結、可読性と保守性を必要とします

文字列のSQL = "ヒーロー値を挿入(NULL、" + " '提莫'" + " "+ 313.0f +"、 "+ 50 +")"。

PreparedStatementのパラメータ設定、読み、作るのは簡単ミス

文字列のSQL = "ヒーロー値を挿入(ヌル、、、???)"。

 

パブリック クラスTestJDBC {
     公共 静的 ボイドメイン(文字列[]引数){ 
  
        試みる{ 
            Class.forNameの( "はcom.mysql.jdbc.Driverを" )。
        } キャッチ(ClassNotFoundExceptionが電子){ 
            e.printStackTrace(); 
        } 
  
        文字列のSQL = "ヒーロー値を挿入(ヌル、、、???)" してみてください(接続C =したDriverManager.getConnection( "JDBCを:mysqlの://127.0.0.1:?3306 / how2java characterEncoding = UTF-8"、 "根"、 "管理者" ); 
            ステートメントS = c.createStatement();c.prepareStatement(SQL); 
        ){ 
            // ステートメントは、文字列の連結、貧弱可読性と保守の必要な 
            文字列sql0 = "ヒーロー値を挿入 (NULL、" + " ' + ""コムギ'" +を+ 313.0f "" + 50 + ")" ; 
            s.execute(sql0); 
  
            // PreparedStatementのパラメータ設定は、読みやすさは、とミスをしない
             // ),,,ヌル(ヒーロー値。INSERT INTO」??? "; 
            ps.setString(1、。"コムギ" ); 
            ps.setFloat( 2、313.0f ); 
            ps.setInt( 3、50 ); 
            ps.execute()。
        } キャッチ(のSQLException E){
             // TODO自動生成されたcatchブロック
            e.printStackTrace(); 
        } 
  
    } 
}

オリジナル住所:のhttp://how2j.cn/k/jdbc/jdbc-preparedstatement/388.html#nowhere

 

実行同じポイントのexecuteUpdateを:追加、削除、変更を実行することが可能です、

パブリック クラスTestJDBC {
     公共 静的 ボイドメイン(文字列[]引数){
         試みる{ 
            Class.forNameの( "はcom.mysql.jdbc.Driverを" )。
        } キャッチ(ClassNotFoundExceptionが電子){ 
            e.printStackTrace(); 
        } 
 
        試みる(接続C =たDriverManager.getConnection( "JDBCを:MySQLの://127.0.0.1:3306 / how2java characterEncoding = UTF-8"、 "ルート"、 "管理者" ); 
            ステートメントS = c.createStatement()。 ){ 
 
            文字列sqlInsert = "は、ヌル(ヒーロー値に挿入'盖伦'、616100)を" = "ID = 100ヒーローから削除" ; 
            ストリングsqlUpdate = "更新ヒーローセットHP = 300 ID = 100" 
 
            // 相同点:都可以执行增加、删除、修改
 
            s.execute(sqlInsert)。
            s.execute(sqlDelete)。
            s.execute(sqlUpdate)。
            s.executeUpdate(sqlInsert)。
            s.executeUpdate(sqlDelete)。
            s.executeUpdate(sqlUpdate)。
 
        } キャッチ(のSQLException E){
             // TODO自動生成キャッチブロック
            e.printStackTrace(); 
        } 
 
    } 
}

違い:

異なる1:
実行クエリを実行することができる
次いでgetResultSetメソッドを、結果セットが取り出される
のexecuteUpdateが実行されないクエリ
異なる2:
実行戻るに、クエリの実装は、falseを実行インサートは、削除することを示すこと本当のブール型を、更新等
executeUpdateのは、intを返し、データの多くの部分が影響を受けているかを示します

パブリック クラスTestJDBC {
     公共 静的 ボイドメイン(文字列[]引数){ 
  
        試み{ 
            Class.forNameの( "はcom.mysql.jdbc.Driver" ); 
        } キャッチ(ClassNotFoundExceptionがE){ 
            e.printStackTrace(); 
        } 
 
        試み(C接続たDriverManager.getConnection =( "?JDBC:MySQLの://127.0.0.1:3306 / how2java = UTF-8 characterEncoding。"、 "ルート"、 "管理" ); 
            ステートメントS = c.createStatement()){ 
  
            // 異なります1:クエリを実行し、実行することができる
             // getResultSetメソッドは、結果セットから取り出し、次いで
            "ヒーローSELECT * FROM" SQLSelect =文字列; 
  
            s.execute(SQLSelect)
            のResultSet RS = s.getResultSet();
             一方(rs.next()){ 
                System.out.printlnは(rs.getInt( "ID" )) ; 
            } 
  
            // のexecuteUpdateは実行できないクエリ
             // s.executeUpdate(SQLSelect); 
  
            // 異なる2:
             // 戻りをboolean型を実行し、真のクエリ、偽表現の実装を行うことで、挿入、削除、更新、等
            ブール isSelect = s.execute(SQLSelect); 
            System.out.printlnは(isSelect); 
  
            // のexecuteUpdate intを返すには、データの多くの部分が影響を受けているかを示します
            ストリングsqlUpdate = "更新ヒーローセットHP = 300 ID <100" INT番号= s.executeUpdate(sqlUpdate)。
            System.out.println(番号)
  
        } キャッチ(のSQLException E){
             // TODO自動生成キャッチブロック
            e.printStackTrace(); 
        } 
  
    } 
}

オリジナル住所:のhttp://how2j.cn/k/jdbc/jdbc-execute/389.html#nowhere

おすすめ

転載: www.cnblogs.com/churujianghudezai/p/11441171.html
おすすめ