JDBCでMySqlを操作する


1、あなたが使っているドライバをドライバマネージャに登録します.例のコードは以下の通りです.import java.sql.DriverManager;import java.sql.SQLException;/Notice,do not import comple.mysql.jdbc.*/or you will have probles!public class LoadDriver{    public static void main(String[]args){        try{           //The newInstance()call is a work around for some           //brooken Java implementation s            Class.forName("come.mysql.jdbc.Driver").newInstance();        } catch(Exception ex){           //handle the error        }}2、ドライバ登録後、関連データベースとの接続を取得できます.コード例は以下の通りです.    ... try{            Connection conn=DriverManager.get Connection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");           //Do something with the Connection           ....        } catch(SQLException ex){           //handle any errors            System.out.printel(「SQLException:」+ex.get Message();            System.out.println(SQLState:)+ex.get SQLState();            System.out.println("Vendor Errror:"+ex.getError Code");        }3、DriverManager.get Connection()またはDataSource.get Connectionを使用して接続を確立し、接続されたcreatestatement()法によってステートメントの一例を作成することができます.ステートメントの例を作成すると、そのexecuteQueryを呼び出すことができます.方法でクエリー操作を行います.クエリーの結果は結果セットに格納されます.executeUpdate(String SQL)方法でデータベースを更新することもできます.戻り値は数値型で、影響を受けたレコードの数を表します.実行されているSQL文がクエリーか更新かを事前に知らないなら、execute(String SQL)この方法は、ステートメントを実行することができます.戻り値はブール型で、trueはクエリー動作を表し、falseは更新動作を表します.この操作がクエリーであれば、get Result Set()方法で結果セットを得ることができます.この操作が更新されているなら、getsUpdateCount()を通じて()影響を受けた記録の数を獲得しました.例コードは以下の通りです./assiume conn is an already created JDBC connectionstement stmt=null、ResultSet rs=null、try{    stmt=conn.createment()    rs=stmt.executeQuery(「SELECT foo FROM bar」);   //or alternative ely,if you don't know ahead of time that   //the query will be a SELECT…    if(stmt.execute(「SELECT foo FROM bar」){        rs=stmt.getResult Set()    }   //Now do something with the Result Set….finally{   //it is a good idea to release   //resoures in a finally{}block   //in reverse-order of their creation   //if they are no-longer need    if(rs!=null){        try{            s.close();        } catch(SQLException sqlEx){/ignore}        rs=null    }    if(stmt!=null){        try{            stmt.close()        } catch(SQLException sqlEx){/ignore}        stmt=null    }}4、呼び出しがデータベースに格納される過程の例コードは以下の通りである.プロセス:CREATE PROCEDURE demoSp(IN inputParam VRCHAR(255)、INOUT inOutParam INT)BEGIN    DECLARE z INT    SET z=inOutParam+1;    SET inOutParam=z    SELECT inputParam    SELECT CONCAT('zyxw'、inputParam);END呼び出しプロセス:import java.sql.Clable Statement;   //   //Prepare a call to the stored procedure'demoSp'   //with two parameters   //   //Notice the use of JDBC-escape sntax({call…}   //    Callable Sttement cStmt=conn.prepareCall(「{call demoSp]」);    cStmt.set String(1,abcdefg);prepareCall()方法は非常に費用がかかる方法ですので、できるだけ少なくこの方法を呼び出すべきです.できるだけ同じCallable Statementの例を繰り返し使用してください.プロセスの戻り値を取得したいなら、その戻り値を示す変数を登録してください.例コードは以下の通りです.   //   //Connector/J supports both named and indexed   //output parameters.You can register output   //parameters using einther method、as well   //as retrieve out put parameters using eigher   //method、regardless of what method was   //used to register them.   //   //The follwing examples show how to use   //the various methods of registing   //out put parameters(you shound of course)   //use only one registration per parameter)   //   //   //Register s the second parameter as out put   //    cStmt.register OutParameeter(2)   //   //Register s the second parameter as output,and   //uses the type'INTEGER'for values returned from   //get Object()   //    cStmt.register OutParameeter(2、Types.INTEGER);   //   //Register s the named parameter'inOutParaam'   //    cStmt.register OutParameter(inOutParam);   //   //Register s the named parameter'inOutParaam'and   //uses the type'INTEGER'for values returned from   //get Object()   //    cStmt.register OutParameter(inOutParam)、Types.INTEGER)、パラメータをプロセスに伝えるいくつかの方法://   //Set a parameter by index   //    cStmt.set String(1,abcdefg);   //   //Alternative ely,set a parameter using   //the parameter name   //    cStmt.set String(「input Parameeter」、「abcdefg」)   //   //Set the'in/out'parameter using an index   //    cStmt.setInt(2,1)   //   //Alternative ely,set the'in/out'parameter   //by name   //    cStmt.setInt(inOutParam);プロセスを実行した後、戻り値はどうなりますか? int output Value=cStmt.getInt(1)//index-based    out put Value=cStmt.get Int(inOutParam)//name-based