DBと連携させる2つの方法~ソースコードを直接書くか書かないか~

新卒SE

今回実現させる出力結果

DEPT表からDEPTNO が 40 のデータを削除する。

削除に成功した時に出力される画面

削除ができない(削除するデータが存在しない)時に出力される画面

ソースコードを直接書かないコード

<%@ page contentType="text/html; charset=UTF-8" %>
<%-- JDBC API のインポート--%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<%request.setCharacterEncoding("UTF-8");

//実行する SQL 文
String strsql = "select * from DEPT";
String strsql2 = "delete from DEPT where DEPTNO=40";

//DB接続オブジェクト
Connection db = null;
//命令を管理するオブジェクト
Statement st = null;
//結果セットオブジェクト
ResultSet rs = null;


try{
InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:/comp/env/jdbc/my_dbedu");

//DBへの接続処理
db = ds.getConnection();
out.println("ドライバのロード OK <br>");

out.println("DBへの接続 OK <br>");

//SQLを命令するためのオブジェクト生成
st = db.createStatement();

//delete文の実行
int reccnt = st.executeUpdate(strsql2);

//結果セットの作成 (SELECT 文の実行)
rs = st.executeQuery(strsql);
%>
<html>
<head>
<title>Oracle 接続テスト </title>
</head>
<body>
<h2>SELECT文の実行 </h2>

実行した文 (delete) →→<%= strsql2 %><hr>
実行した文 (select) →→<%= strsql %><hr>
<%=reccnt %>件のデータを削除しました。
<table><tr><th>NO</th><th>氏名 </th><th>住所</th></tr>
<% while(rs.next()){ %>
<tr><td><%= rs.getInt("DEPTNO") %></td>
<td><%= rs.getString("DNAME") %></td>
<td><%= rs.getString("LOC") %></td></tr>
<% } %>
</table><hr>
</body>
</html>

<%
}
catch(Exception e){
out.println("エラーです");
e.printStackTrace();
}finally{
try{
//Statementオブジェクトの開放
if(st != null){
st.close();

out.println("Statement 開放 OK <br>");
}


if(db != null){
db.close();
out.println("切断 OK <br>");
}
}catch(Exception e){
e.printStackTrace();

}

}

%>

ソースコードを直接書く方法

<%@ page contentType="text/html; charset=UTF-8"
<% JDBC API のインポート%>
<%@ page import="java.sql.*" %>


<%
// 接続情報
String DBDriver = " com.mysql.jdbc.Driver";
String DBUrl = " jdbc:mysql://localhost:3306/××××"; //意図的に伏せています
String DBUser = "root";
String DBPassword = "××××"; //意図的に伏せています

//実行する SQL 文
String strsql = "select * from DEPT";
String strsql2 = "delete from DEP T where DEPTNO=40";

//DB接続オブジェクト
Connection con = null;

//命令を管理するオブジェクト
Statement st = null;
//結果セットオブジェクト
ResultSet rs = null;

try{
//ドライバクラスのロード
Class.forName (DBDriver);
out.println("ドライバのロード OK <br>");

//DBへの接続処理
con = DriverManager.getConnection(DBUrl,DBUser,DBPassword);
out.println("DBへの接続 OK <br>");

//SQL を命令するためのオブジェクト生成
st = con.createStatement();

//delete文の実行
int reccnt = st.executeUpdate(strsql2);

//結果セットの作成 (SELECT 文の実行
rs = st.executeQuery(strsql);
%>
<html>
<head>
<title>Oracle 接続テスト </title>
</head>
<body>
<h2>SELECT文の実行 </2>

実行した文 (delete) →→<%= strsql2 %><
実行した文 (select) →→<%= strsql %><
<%=reccnt %>件のデータを削除しました。
<table><tr><th>NO</th><th>氏名 </th><th>住所 </th></tr>
<% while(rs.next()){
<tr><td><%= rs.getInt("DEPTNO") %></td>
<td><%= rs.getString("DNAME") %></td>
<td><%= rs.getString("LOC") %></td></tr>
<% } %>
</table><hr>
</body>
</html>
<%
 }
catch(Exception e){
out.println("エラーです");
e.printStackTrace();
}finally{
try{

//Statementオブジェクトの開放
if(st != null){
st.close();

out.println("Statement 開放 OK <br>");
}

if(con != null){
con.close();
out.println("切断 OK <br>");
}
}catch(Exception e){
e.printStackTrace();
 }
}
%>

 

コメント

タイトルとURLをコピーしました