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