データベース・ベース・アクション


JSP技術では、データベースに対する操作はすべてJDBCコンポーネントによって行われる.JDBCはjavaプログラムとデータベースの間で橋渡しの役割を果たします.
一JDBCの概念
1.JDBC(Java DataBase Connectivity)は、SQL文を実行するJava APIであり、複数のリレーショナル・データベースへの統合アクセスが可能である.JAVA言語で記述されたクラスとインタフェースのセットから構成されています.JDBCは「低レベル」インタフェースで、SQLコマンドを直接呼び出すことも、その上に高度なインタフェースとツールを構築することもでき、ユーザーに優しいインタフェースを提供します.
   
2.JDBC APIはデータベースアクセスの2層モデルと3層モデルをサポートする.
   
2層モデル:クライアントプログラム<-->データベース;3層モデル:クライアントプログラム<-->中間層<-->データベース.
中間層のメリットは
  • は、企業データへのアクセスと更新の種類を制御することができる.
  • ユーザは、高度なAPIを利用することができ、中間層がそれを対応する低レベル呼び出し
  • に変換する責任を負う.
    3.JDBCのドライバには、JDBC-ODBCブリッジ、ローカルAPIドライバ、ネットワークプロトコルドライバ、ローカルプロトコルドライバの4種類があります.
    二JDBC API紹介
  • DriverManagerクラスは、異なるドライバのロードを担当し、異なる要求に従ってデータベース接続(Connection)に戻る.

  • a.DriverManagerを使用するgetConnection()データベースへの接続を確立します.
    b.一連のDriverクラスを含み、Driverクラスには静的部分があり、このクラスインスタンスを作成し、DriverManagerを呼び出す.registerDriverは、ユーザーが直接登録方法を呼び出す必要がなく、自分を登録します.
    c.Classを通過する.forName()メソッドは、Classなどのロードドライバクラスを表示します.forName("acme.db.Driver");ドライバを追加
    java.lang.Systemのjdbc.driversプロパティでは、DriverManagerクラスがロードしたドライバクラス名のリストです.コロン区切りで、DriverManagerクラスを初期化すると、そのプロパティを検索してドライバをロードしようとします.DriverクラスをロードしてDriverMangerクラスに登録すると(先にロードしてから登録)、DriverManager.getConnection()が接続要求を発行した場合、DriverManagerは各ドライバをチェックし、最近のドライバ(可能なものが複数ある場合があります)とURLを接続します.URLはデータベースを示す方法を示します.URL構文:jdbc:<サブプロトコル>:<サブネーム>
    のように
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//        
    String url="jdbc:odbc:fred";
    DriverManager.getConnection(url,"userID","passwd");
    
    
    
    
    
    
    
    
  • Connectionオブジェクトは、実行されたSQL文とその接続で返された結果を含むデータベースへの接続を表します.
  • Statement、PreparedStatement(パラメータなしのプリコンパイルSQL)、CallableStatementオブジェクト(データベース・ストレージ・プロシージャの呼び出し)、SQL文をデータベースに送信します.
  • a.excuteQuery()はselect文のような単一の結果セットを返す
    b.excuteUpdate()は、insert、update、deleteなどの影響を受ける行数を返します.
    c.excute()は複数の結果セットを返す
    Connection con = DriverManager.getConnection(url,
    "userID","passwd");
    Statement stmt = con.createStatement();
    ResultSet st = stmt.excuteQuery("select a,b form Table1");
    
    
    
    
    
    

    注意:StatementオブジェクトはJavaゴミ回収プログラムによって自動的にシャットダウンされます.プログラミングスタイルとしてシャットダウンを表示し、DBMSリソースをタイムリーに解放する必要があります.
  • ResultSetデータベースの結果セットではnext()などの一般的な方法で、結果セットでのカーソルの移動を制御します.

  • 三応用例:JDBC-ODBC方式でアクセスアクセスアクセス
     
    1.まずaccessデータベースにデータベースtestを作成し、テーブルuser、フィールド情報、username、userpwd、userxianを作成する
    2.odbcデータソース接続の作成、方策略
    3.データベース追加記録操作を完了するには、2つのJSPページが必要であり、1つはデータ入力ページin 1である.jspは、データ処理ページin 2である.jsp .
    コードは次のとおりです.
    in1.jsp
    <%@page contentType="text/html; charset=GB2312" language="java" 
    import="java.io.*"%>
    <html>
    <body>
    <center>
    <h3>      </h3>
    <form method=post action=in2.jsp>
         :<input name=username><br>
       &nbsp;&nbsp; :&nbsp;<input type=password name=userpwd><br>
      <input type=submit value="  "><input type=reset value="  ">
    </form>
    </center>
    </body>
    </html>
    
    
    
    
    
    

          in2.jsp
    <%@page contentType="text/html; charset=GB2312" language="java"
    	import="java.sql.*"%>
    <%!String getS(String str) {
    		try {
    			byte b[] = str.getBytes("iso-8859-1");
    			str = new String(b);
    		} catch (Exception e) {
    			str = "    ";
    		}
    		return str;
    	}%>
    <%
    	try {
    		String str1 = request.getParameter("username");
    		String str2 = request.getParameter("userpwd");
    		str1 = getS(str1.trim());
    		str2 = getS(str2.trim());
    		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    		Connection con1 = DriverManager.getConnection("jdbc:odbc:test");
    		Statement stmt1 = con1.createStatement();
    		stmt1
    				.executeUpdate("INSERT INTO user(username,userpwd) VALUES ('"
    						+ str1 + "','" + str2 + "')");
    		out.println("         ");
    		con1.close();
    	} catch (Exception e) {
    	}
    %>