メインコンテンツ:
1.JDBC接続データベース(編集)ステップ(主に6つのステップがあります)
1。ドライバーを登録:class.forname( "com.mysql.jdbc.driver"); JVMに荷重を表示しました
2。接続の取得:(1)Param1:データベースに接続するURL -----》文字列url = "JDBC:MySQL:// localHost:3306/test?
PARAM2:データベースに接続するためのユーザー名 - 》文字列ユーザー= "h4";
PARAM3:データベースに接続するパスワード----》文字列pass = "111";
接続conn = drivermanager.getConnection(url、user、pass); // drivermanagerの下のメソッド:getConnection(string url、string username、string password)
(2)次に、URLを分析します。「JDBC(このプロトコルはJDBCで始まります):MySQL(これはサブプロトコル、データベース管理システム名です):// localhost(データベースソースアドレス):3306(ターゲットポート)/テスト(テーブルテーブルがQUERIED)?」
"useunicode = true&charatereCoding = utf8";これは、Carled Codeを防ぐために追加され、Unicode文字セットを使用してUTF-8を使用して編集するように指定されています。
3.ステートメントステートメントオブジェクト(3つの主要な方法)を作成する:ステートメントstmt = conn.createStatement(); //接続インターフェイスの下:ステートメントcreateStatement()
preatedStatement pstmt = conn.preparedStatement();
callablestatement cstmt = conn.preparecall( "{call demosp(?、?)}");
以下に分析しましょう。(1)Queryパラメーターを動的に設定できるステートメントと準備オブジェクトの違い
(2)parparters.Stoxxxx(parameterindex、value)を設定する方法。データベースパラメータータイプがVarcharの場合、SetStringが使用されます。パラメータータイプが整数の場合、Setintが使用されます。
(3)callablestatement.setxxxx(parameterindex、value)//パラメーターの順序で値を設定します
callablestatement.setxxxx(パラメーター名、値)//パラメーターの名前に従って値を設定します。この名前は、ストアドプロシージャを定義する際の正式なパラメーターの名前です。
(4)callablestatement.registeroutparameterメソッドは、ストアドプロシージャの出力値の出力タイプのパラメーターを宣言するために使用されます。
4。sqlステートメントを実行:結果rs = stmt.executequery(sql);クエリステートメントを除き、executequery();他のすべてが実行されます();
ステートメントインターフェイスの下のメソッド:
boolean execute(string sql):sqlステートメントを実行します。return値が結果セットである場合はtrue、それ以外の場合はfalse
resultet executequery(string sql):sqlステートメントを実行し、return値はresultSetです
int executeUpdate(string sql):sqlステートメントを実行すると、return値は影響を受ける行の数です
5。プロセス結果セット:結果セットオブジェクトのgetXXXXメソッドは、データベース内のテーブル内のフィールドのタイプに依存します。例:varchar2はgetStringに対応します。整数の場合、対応する方法はgetint/getlongです
while(rs.next()){rs.getint(columnindex); //列番号rs.getString(columnName)を介してフィールドの値を取得します。 // column name name common methodを介してフィールドの値を取得します。結果Set Afterlast()の最初のレコード(前面)にカーソルを移動します。カーソルを結果セットの最後のレコード(後)に移動します。絶対(intcolumn):最初の行に対して指定された行にカーソルを指定した行に移動し、ネガティブ数は最後のレコードに関連しています。修正。6.リソースを閉じる:操作が完了したら、JDBCを閉鎖してJDBCリソースをリリースする必要があります。しかし、オブジェクトを定義するときの順序は、ドアを閉め、内側から最初に閉じて外側に閉じます。
次の例:
if(rs!= null){// 1。結果を閉じてください{rs.close(); } catch(sqlexception e){e.printstacktrace(); }} if(stmt!= null){// 2。宣言されたオブジェクトを閉じます{stmt.close(); } catch(sqlexception e){e.printstacktrace(); }} if(conn!= null){// 3。接続を閉じます(最初に前の1.2を閉じることを忘れないでください。次に接続を閉じます){conn.close()を試してください。 } catch(Exception e){e.printstacktrace(); }}2。以下は、単純な(詳細な)クエリデータの例です
パッケージJavacore1; //これはあなたが構築したパッケージ名です。 java.sql.callablestatement; import java.sql.connection; Import java.sql.drivermanager; Import java.sql.preparedStatement; Import java.sql.Resultset; //左側の5つは、プログラムを作成するときにインポートするパッケージ名です。 java.sqlの下でパッケージにすることを忘れないでください。 import java.sql.sqlexception; Import java.sql.Statement; public class jdbc {//クラスのpublic static void main(string [] args){// main method {string driver = "com.mysql.jdbc.driver"; // 1。ドライバー名ドライバーをcom.mysql.jdbc.driver string url = "jdbc:mysql:// localhost:3306/test?" // 2。 URLを定義します。 JDBCはプロトコルです。 MySQLはサブプロトコルです。データベースシステム管理名を表します。 LocalHost:3306は、データベースソースのアドレスとターゲットポートです。テストは私が自分で構築したテーブルの場所であり、あなたは標準としてあなたのものを使用します。 + "useunicode = true&charatereCoding = utf8"; //文字化けコードを防止します。 useunicode = unicode文字セットを使用した真の意味。 CharatereCoding = utf8とは、編集にUTF-8を使用することを意味します。 string user = "h4"; // 3。ユーザー名を定義し、接続するユーザーを書き込みます。文字列pass = "111"; // 4。ユーザーパスワード。 string querysql = "select * from Employees"; // 5。探したいテーブル名。 class.forname(ドライバー); // 6。ドライバーを登録し、java.langパッケージの下のクラスクラスでclass.froname()を使用します。ここのドライバーは、1またはclass.forname( "com.mysql.jdbc.driver")で定義されているドライバーです。接続conn = drivermanager.getConnection(url、user、pass); // 7。データベース接続を取得し、java.sqlのdrivermanagerのgetConnectin(string url、string username、string password)を使用して// url、user、bracketsのパスは上記の2、3、および4ステップです。ステートメントstmt = conn.createstatement(); // 8。 SQLステートメントを実行するためのステートメントオブジェクトを作成します。主にステートメント、準備、およびcallable -statementの3つのインスタンスがあります// 3つの実装メソッドは次のとおりです。 // preatedStatement pstmt = conn.preparestatement(sql); // callablestatement cstmt = conn.preparecall( "{call demosp(?、?)}");結果rs = stmt.executequery(querysql); // 9。 SQLを実行し、最後に返します。 Resultset executeQuery(String SQLString):結果セット(resultSet)オブジェクトを返すために使用されます。 while(rs.Next()){//10.Transfers sets system.out.println( "+rs.getString(" employee_id ")+" salary: "+rs.getString(" salary ")+" name: "+rs.getString(" last_name "); != null){// 11.close record set try {rs.close(); } catch(sqlexception e){e.printstacktrace(); }} if(stmt!= null){// 12.宣言されたオブジェクトtry {stmt.close(); } catch(sqlexception e){e.printstacktrace(); }} if(stmt!= null){// 12.宣言されたオブジェクトtry {stmt.close(); } catch(sqlexception e){e.printstacktrace(); }} if(conn!= null){// 13。接続を閉じます(最初に前の11.12を閉じることを忘れないでください。次に接続を閉じます。ドアを閉じるのと同じように、最初に内側を閉じて、最終的に最も外側のものを閉じます){conn.close()を試してください。 } catch(sqlexception e){e.printstacktrace(); }}} catch(例外e){e.printstacktrace(); }}}}3.より直感的になるために、データベース接続の取得をカプセル化し、メソッドの接続をリリースして、後でより良い動作を促進します。
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; public class jdbc {public static void main(string [] args){connection conn = getConnection( "h4"、 "111"); //データベースを取得します 繋がり/*、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、,,,,,,,,,,,,,,,,,,orrdrdロししし] 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、,,,,,,,,,,,,,,,,,,orrdrdロししし] 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、,,,,,,,,,,,,,,,,,,orrdrdロししし] string pass){connection conn = null; //接続オブジェクトストリングドライバー= "com.mysql.jdbc.driver"; //ドライバークラス名文字列url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}4.クエリ、挿入、削除、更新などの処理データベース情報の11の関数を実装します。
1。クエリデータ
Javacore1; Import Java.sql.Connection; Import Java.sql.DriverManager; Import Java.sql.Resultset; Import Java.sql.sqlexception; Import Java.sql.Statement; Import Java.Statement;データベース接続クエリ(conn)を取得します。 //メソッド名を呼び出すデータベース接続リリース(conn); //データベース接続のリリース} try {Statement stmt = conn.createstatement(); // reparedStatementを使用して結果を実行することもできますrs = stmt.executequery(sql); // sqlステートメントを実行し、end(rs.next()){//結果セットを転送し、次のラインsystem.out.println( "人員番号:"+rs.getString( "emplogety)") } if(rs!= null){try {rs.close(); } catch(sqlexception e){e.printstacktrace(); }} if(stmt!= null){try {stmt.close(); } catch(sqlexception e){e.printstacktrace(); }} if(conn!= null){try {conn.close(); } catch(sqlexception e){e.printstacktrace(); }}} catch(例外e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}} //データを照会すると、結果が逆の順序で表示され、逆注文パッケージjavacore1;インポートjava.sql.connection; import java.sql.drivermanager; Import java.sql.resultset; Import java.sql.sqlexection; import Java.Statement; statement; public conmintement; public contement; = getConnection( "h4"、 "111"); //データベース接続クエリ(conn)を取得します; //メソッド名はデータベース接続を呼び出します[conn); //データベース接続のリリース} try {Statement stmt = conn.createstatement(); // reporedStatementを使用して結果を実行することもできますrs = stmt.executequery(sql); // sqlステートメントを実行して、end rs.afterlast()を返すこともできます。 //最初に最後の行にスキップします(rs.Previous()){//結果のセットを転送して、system.out.println( "人員番号:"+rs.getString( "employee_id")+"salary:"+rs.getString( "salary")); } if(rs!= null){try {rs.close(); } catch(sqlexception e){e.printstacktrace(); }} if(stmt!= null){try {stmt.close(); } catch(sqlexception e){e.printstacktrace(); }} if(conn!= null){try {conn.close(); } catch(sqlexception e){e.printstacktrace(); }}}} catch(Exception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}2。データを挿入します
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; Import java.sql.Statement; public static void main(string [] args){connection conn = getConnection(getConnection( "h3"); //データベース接続挿入(conn)を取得します。 //メソッド名はデータベース接続を呼び出しますリリースコネクション(conn); //データベース接続のリリース} //データの挿入public static void insert(connection conn){try {string sql = "inserting intermones(employee_id、last_name、salary、salary、salary、userid)" + "values( '100010'、 'xiaogou'、 '7000'、 '004'、 '9'); //データステートメントを挿入するためのSQLステートメントstmt1 = conn.createStatement(); // static sqlステートメントを実行するためのステートメントオブジェクトを作成しますint count = stmt1.executeupdate(sql); //挿入操作を実行するためのSQLステートメント挿入データシステムの数を返します。 //挿入操作の結果を出力conn.close(); //データベース接続を閉じる} catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // argled try {class.forname(driver); // register(load)the driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}3.データを削除します
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.Statement; public static void main(string [] args){connection conn = getConnection(getConnection( "h3"); //データベース接続削除(conn); //メソッド名はデータベース接続を呼び出します。解放(conn); //データベース接続をリリース} //削除データpublic static void delete(connection conn){string sql = "employee_id = 100009"; try {statement stmt = conn.createStatement(); //またはreprendStatementメソッドstmt.executeupdate(sql); // sqlステートメントを実行するif(stmt!= null){try {stmt.close(); } catch(sqlexception e){e.printstacktrace(); }}} catch(sqlexception e){e.printstacktrace(); }}} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}4.データを更新します
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.Statement; public class update {public static void main(string [] args){connection conn = getConnection(getConnection( "h3"); //データベース接続更新(conn)を取得します。 //データベース接続を呼び出すデータベースリリース(conn); //データベース接続のリリース} try {ステートメントstmt1 = conn.createStatement(); //またはreporedStatementメソッドstmt1.executeupdate(sql); // sqlステートメントを実行するif(stmt1!= null){try {stmt1.close(); } catch(sqlexception e){e.printstacktrace(); }}} catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}5。転送(トランザクション)
JDBCは、クロージング接続の自動コミットを介してトランザクションを処理します。
connection.setautocommit(false);
トランザクションを送信:
connection.commit();
ロールバックトランザクションロールバックパーツ:
connection.rollback(savepoint);
すべてをロールバック:
connection.rollback();
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.statement; public class transcash {public static void main(string [] args){connect conn = getConnection( "h3"、 "111111"); //メソッド名はデータベース接続を呼び出しますリリースリリース(conn); //データベース接続のリリース} //転送(データ変換)(元のデータは100および500でしたが、この関数を実装した後、それはぼんやりとします。 try {conn.setautocommit(false); //自動提出文字列sql = "close従業員を設定した給与= 500 employee_id = 100001"; stmt = conn.createstatement(); stmt.executeupdate(sql); sql = "更新従業員は給与= 100を設定します。 stmt.executeupdate(sql); // sqlステートメントを実行すると、上記の2つの給与が交換されます// int i = 1/0;もしそうなら、これは完全なものであり、少し失敗した場合、すべてがconn.commit(); // commit Transaction} catch(例外e){e.printstacktrace(); }最後に{try {if(stmt!= null){stmt.close(); } catch(Exception e){e.printstacktrace(); }}} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}6.パラメーターのないストアドプロシージャを見つけます
パッケージjavacore1; import java.sql.callablestatement; import java.sql.connection; Import java.sql.drivermanager; import java.sql.sqlecception; public class execproc {public static void main(string [] args){connection conn = getConnection(H3 "); //データベース接続を取得しますexecProc(conn); //メソッド名を呼び出しますdatabase接続リリース(conn); //データベース接続のリリース} // call call call call call public static void execproc(connection conn){string sql = "{call raisesalary}"; try {callablestatement cstmt = conn.preparecall(sql); cstmt.executeUpdate(); } catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}7.パラメーターを使用したストアドプロシージャを見つけます
パッケージjavacore1; import java.sql.callablestatement; import java.sql.connection; Import java.sql.drivermanager; import java.sql.types; public static void main(string [] args){connection conn = getConnection(h3 "); //データベース接続を取得int cnt = getMulti(conn); //ストアドプロシージャを見つけます。 System.out.println( "人番号:" + cnt);解放(conn); //データベース接続のリリース} //検索プロセスにはパラメーターがありますpublic static int getMulti(connection conn){int dept_id = 100001; int cnt = 0; string sql = "{call calc_emp_count(?、?)}"; try {callablestatement cstmt = conn.preparecall(sql); //ステートメントオブジェクトCSTMT.setint(1、dept_id); // callablestatement.setxxx(パラメーター、値)または(number、value)、およびpreatedstatement.setxxx(number、value)は、このcstmt.setInt(2のようになります。 // cstmt.registeroutparameter(2、types.integer); //出力パラメーターcstmt.executeupdate(); // sqlステートメントcstmt.getint(2); //結果を取得します。 e.printstacktrace(); } cntを返します。 } //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名String url = "JDBC:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}8。通常の処理
javacore1; Import java.sql.connection; Import java.sql.date; Import java.sql.drivermanager; Import java.sql.preparedStatement; Import java.sql.sqlexception; 「111111」); //データベース接続PlanInsert(conn); //メソッド名はデータベース接続を呼び出しますリリースコネクション(conn); //データベース接続をリリース} // public static void planinsert(connection conn)の通常の処理{try {string sql = "test_user1(userid、username、loadingtime)" + "values(?、、?)"; // sqlステートメントを挿入するためのSql statement pstmt = conn.preparestatement(sql); long starttime = system.currenttimemillis(); for(int i = 0; i <1000; i ++){pstmt.setlong(1、i); pstmt.setString(2、 "user"+i); pstmt.setdate(3、new Date(System.CurrentTimemillis())); pstmt.executeupdate(); } system.out.println( "総時間が取られた時間:"+(system.currenttimemillis() - starttime)); pstmt.close(); //データベース接続を閉じる} catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}9。バッチ処理
元のJDBCトランザクションパターンを取得します。
boolean currentTransactionModle = con.getAutoCommit();
トランザクションモードに設定(オフ自動コミット):
con.setautocommit(false);
ステートメントstm = con.createstatement();
3つの不均一なSQLステートメント:
文字列sql1 = "ユーザーから削除= 8";
string sql2 = "ユーザーを更新するname = 'java' where id = 7";
string sql3 = "ユーザーに挿入(名前、パスワード)値( 'jdbc'、 'jdbc')";
ステートメントのバッチ処理バッファーに追加します。
stm.addbatch(sql1);
stm.addbatch(sql2);
stm.addbatch(sql3);
バッチの更新を実行します:
stm.executeBatch();
このバッチアップデートのトランザクションを送信します。
con.commit();
元のトランザクションモードへの返信:
con.setautocommit(currentTransactionModle);
パッケージjavacore1; import java.sql.connection; import java.sql.date; Import java.sql.drivermanager; Import java.sql.preparedStatement; Import java.sql.sqlexception; 「111111」); //データベース接続batchinsert(conn); //メソッド名はデータベース接続を呼び出しますリリースコネクション(conn); //データベース接続のリリース} //バッチ挿入の速度は、通常の処理の速度よりも高速であるpublic static void batchinsert(connection conn){try {string sql = "test_user1(userid、username、loadingtime)" + "vatues(?、?、?)"; //データを作成したデータを挿入するSQLステートメントpstmt = conn.preparestatement(sql); long starttime = system.currenttimemillis(); for(int i = 0; i <1000; i ++){pstmt.setlong(1、i); pstmt.setString(2、 "user"+i); pstmt.setdate(3、new Date(System.CurrentTimemillis())); pstmt.addbatch(); // batch processingに追加} int [] result = pstmt.executebatch(); System.out.println( "総時間が取られた:"+(system.currenttimemillis() - starttime)); pstmt.close(); //データベース接続を閉じる} catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}10。ページネーションディスプレイ
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; Import java.sql.Resultset; Import java.sql.sqlexception; 「111111」); //データベース接続のページング(conn、1,3); //メソッド名はデータベース接続を呼び出し、どの行をリリースするかを表示する行を定義します(conn); //データベース接続をリリース} preatedStatement pstmt = conn.preparestatement(sql); pstmt.setint(1、startindex); pstmt.setint(2、合計);結果rs = pstmt.executequery(); while(rs.next()){system.out.print( "work number:"+rs.getint(1)); system.out.println( "部門番号:"+rs.getint( "department_id")); } rs.Close(); pstmt.close(); } catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}11.結果セットはスクロールできます
パッケージjavacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; Import java.sql.Resultset; Import java.sql.sqlexception; 「111111」); //データベース接続を取得scrpllResult(conn); //メソッド名を呼び出すデータベース接続リリース(conn); //データベース接続をリリース} //スクロールをスクロールすることができます//並行性、結果セットは読み取り専用であり、準備された測定は変更できません。 preatedStatement pstmt = conn.preparestatement(sql、resultset.type_scroll_sensitive、resultset.concur_read_only);結果rs = pstmt.executequery(); while(rs.next()){// Travel System.out.print( "work number:"+rs.getlong(1)); System.out.println( "name"+rs.getString( "last_name")); } while(rs.Previous()){// Travel System.out.print( "work number:"+rs.getlong(1)); system.out.println( "作業番号:"+rs.getlong(1)); } rs.Absolute(6); //ラインに直接移動するif(rs.next()){system.out.print( "work number:"+rs.getlong(1)); system.out.println( ".........部門番号:"+rs.getString( "department_id")); } rs.Close(); pstmt.close(); } catch(sqlexception e){e.printstacktrace(); }} //データベース接続public static connection getConnection(String user、string pass){connection conn = null; //接続オブジェクト文字列driver = "com.mysql.jdbc.driver"; //ドライバークラス名url = "jdbc:mysql:// localhost:3306/test?" // database url + "useunicode = true&charatereCoding = utf8"; // garled try {class.forname(driver); // register(load)driver conn = drivermanager.getConnection(url、user、pass); // get database connection} catch(例外E){e.printstacktrace(e.printstacktrace(); } return conn; } //データベース接続をリリースしますpublic static void releaseconnection(connection conn){try {if(conn!= null)conn.close(); } catch(Exception e){e.printstacktrace(); }}}5.上記の11を一緒に置くことは、もちろん最も便利で時間を節約しやすいです。 (誰が使用する必要があるか、前のコメントを開くだけです)
package javacore1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Statement;import java.sql.Types;public class jdbcMySql {public static void main(String[] args) { Connection conn = getConnection("h3", "111111"); // Get database connection //query(conn); //1. Query data //insert(conn); //2. Insert data //delete(conn); //3. Delete data //update(conn); //4. Update data //transCash(conn); //5. Transfer//execProc(conn); //6. Find stored procedures without parameters //int cnt = getMulti(conn); //7. Find stored procedures with parameters //System.out.println("People number: " + cnt); //Find stored procedures with parameters //planInsert(conn); //8. Ordinary processing //batchInsert(conn); //9. Batch processing // paging(conn,1,3);//10. Pagination display//scrpllResult(conn);//11. The result set can be scrolled to releaseConnection(conn);// Release database connection}//1. Query data, define query method public static void query(Connection conn){ String Sql="select * from employees"; try{ Statement stmt=conn.createStatement(); // You can also use PreparedStatement to do ResultSet rs=stmt.executeQuery(Sql);//执行sql语句并返还结束while(rs.next()){//遍历结果集System.out.println("人员编号:"+rs.getString("employee_id")+"工资:"+rs.getString("salary")); } if(rs !=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt !=null){ try{ stmt.close(); }catch(SQLException e){ e.printStackTrace(); } } if(conn !=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } }catch(Exception e){ e.printStackTrace(); }}//2.插入数据public static void insert(Connection conn) { try { String sql = "insert into employees(employee_id,last_name,salary,department_id,userid)" + " values ('100010', 'xiaogou', '7000','004','9')"; // 插入数据的sql语句Statement stmt1 =conn.createStatement(); // 创建用于执行静态sql语句的Statement对象int count = stmt1.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数System.out.println("向biao中插入了" + count + " 条数据"); //输出插入操作的处理结果conn.close(); //关闭数据库连接} catch (SQLException e) { e.printStackTrace(); } }//3.删除数据public static void delete(Connection conn){ String Sql = "delete from employees where employee_id=100009"; try { Statement stmt = conn.createStatement();// 或者用PreparedStatement方法stmt.executeUpdate(Sql);//执行sql语句if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } }//4.更新数据public static void update(Connection conn){ String Sql = "update employees set salary=8000 where employee_id=100005"; try { Statement stmt1 = conn.createStatement();//或者用PreparedStatement方法stmt1.executeUpdate(Sql);//执行sql语句if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } //5.转账(数据调换)(原来数据为100和500,实现这个功能后变成500和100,其实说白了就是更新数据,改数据) public static void transCash(Connection conn){ Statement stmt = null; try{ conn.setAutoCommit(false);//关闭自动提交String sql = "update employees set salary=500 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100002"; stmt.executeUpdate(sql);//执行sql语句,上面的两个工资将会调换conn.commit();//提交事务}catch(Exception e){ e.printStackTrace(); }finally{ try{ if(stmt != null)stmt.close(); }catch(Exception e){ e.printStackTrace(); } } }//6.调用无参存储过程; public static void execProc(Connection conn){ String sql = "{call raisesalary}"; try { CallableStatement cstmt = conn.prepareCall(sql); cstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } //7.查找存储过程有参public static int getMulti(Connection conn) { int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count(?,?)}"; try { CallableStatement cstmt = conn.prepareCall(sql);//初始化Statement对象cstmt.setInt(1, dept_id);//CallableStatement.setxxx(参数,值)或者(数字,值),而PreparedStatement.setxxx(数字,值)只能这样cstmt.setInt(2, cnt); // cstmt.registerOutParameter(2, Types.INTEGER);//声明输出参数cstmt.executeUpdate();//执行sql语句cnt = cstmt.getInt(2);//获取结果if (cstmt != null) { cstmt.close();// 释放Statement对象} } catch (Exception e) { e.printStackTrace(); } return cnt; }//8.普通处理public static void planInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // 插入数据的sql语句PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.executeUpdate(); } System.out.println("总共耗时:"+(System.currentTimeMillis() - startTime)); pstmt.close(); //关闭数据库连接} catch (SQLException e) { e.printStackTrace(); } } //9.批量插入的速度要比普通处理的速度快public static void batchInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // 插入数据的sql语句PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.addBatch();//添加到批量处理} int[] result=pstmt.executeBatch(); System.out.println("总共耗时:"+(System.currentTimeMillis() - startTime)); pstmt.close(); //关闭数据库连接} catch (SQLException e) { e.printStackTrace(); } }//10.分页查询public static void paging(Connection conn,int startIndex,int total){ try{ String sql="select * from employees limit ?,?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1, startIndex); pstmt.setInt(2, total); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.print("工号:"+rs.getInt(1)); System.out.println("部门编号:"+rs.getInt("department_id")); }rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } }//11.结果集滚动显示public static void scrpllResult(Connection conn){ try{ String sql="select * from employees"; //结果集可以滚动//并发性,结果集只读,不可以修改PreparedStatement pstmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ //向下一行遍历System.out.print("工号:"+rs.getLong(1)); System.out.println("名字"+rs.getString("last_name")); }while(rs.previous()){//向上一行遍历System.out.print("工号:"+rs.getLong(1)); System.out.println("工资"+rs.getInt("salary")); } rs.absolute(6);//表示直接跳到第几行if(rs.next()){ System.out.print("工号:"+rs.getLong(1)); System.out.println("..........部门编号:"+rs.getString("department_id")); } rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } } //数据库连接public static Connection getConnection(String user, String pass) { Connection conn = null;//声明连接对象String driver = "com.mysql.jdbc.Driver";// 驱动程序类名String url = "jdbc:mysql://localhost:3306/test?" // 数据库URL + "useUnicode=true&characterEncoding=UTF8";// 防止乱码try { Class.forName(driver);// 注册(加载)驱动程序conn = DriverManager.getConnection(url, user, pass);// 获取数据库连接} catch (Exception e) { e.printStackTrace(); } return conn; }//释放数据库连接public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch(Exception e){e.printstacktrace(); }}}六.安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(但是安装方法都是一样的)
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是
打开eclipse
1.右击要导入jar包的项目,点properties
2.左边选择java build path,右边选择libraries
3.选择add External jars
4.选择jar包的按照路径下的确定后就行了。
Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
1.鼠标放在你建的根目录上面。右击,然后选择最下面的properties。
2.然后左边选择java build path,右边选择libraries ,在选择右边的add External jars ,选择jar包的路径,点击确定就可以了
3.装好后,图如下出现你要添加的包。