国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

RedHatLinux網絡服務器構架實務(七)

2019-09-08 23:17:55
字體:
來源:轉載
供稿:網友

vi/home/www/cnmsql.jsp
##源代碼如下:
<%@pagelanguage="java"import="java.sql.*"%>
<%
Class.forName("org.gjt.mm.mysql.Driver");
Connectionconn=DriverManager.getConnection("jdbc:mysql://host_name/db_name","user_name","password");
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("select*fromprov");
rs.next();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.next();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.previous();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.last();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.first();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.close();
stmt.close();
conn.close();
%>

4測試該程序
lynxhttp://www.yesgo.loc/cnmysql
##正確的結果應該是:

1安徽
2北京
1安徽
34臺灣
1安徽

例二:使用連接池連接數據庫
1建立數據源
vi/usr/local/resin/conf/resin.conf

<resource-ref>
<res-ref-name>jdbc/yesgo</res-ref-name>//數據源名稱
<res-type>javax.sql.DataSource</res-type> //數據源類型
<init-paramdriver-name="org.gjt.mm.mysql.Driver"/>//數據庫驅動
<init-paramurl="jdbc:mysql://localhost/yesgo"/>//連接串
<init-paramuser="your_user_name"/>//用戶名
<init-parampassword="your_password"/>//密碼
<init-parammax-connections="20"/>//最大連接數
<init-parammax-idle-time="30"/> //延時時間
</resource-ref>

2創建JSP源文件
touch/home/www/testpool.jsp
chown-Rwww/home/www/testpool.jsp
chgrp-rroot/home/www/testpool.jsp
chmod771/home/www/testpool.jsp

vi/home/www/testpool.jsp
##源代碼如下:

<%@pagelanguage="java"import="java.sql.*,com.caucho.sql.*;"%>
<%
DBPoolpool=newDBPool();
Connectionconn=pool.getPool("data_source_name").getConnection();
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("select*fromprov");
rs.next();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.next();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.previous();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.last();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.first();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.close();
stmt.close();
conn.close();
%>

3調試該程序
lynxhttp://www.yesgo.loc/testpool.jsp
##處理的結果跟例一是一樣的:

1安徽
2北京
1安徽
34臺灣
1安徽

例三:使用處理層連接數據庫
##本例告訴你如何使用組件
##其實你完全可以寫一個bean來處理數據庫,而不用象例二那么羅索。只用四條語句就可以取出數據庫中的所有數據并顯示出來,這樣做實現了處理層和邏輯層的徹底分離,由邏輯層發出指令、由處理層去響應相關處理,記錄集也不會返回到邏輯層的jsp頁面,而由處理層的bean處理,使得代碼非常精簡,效率也更高。至于如何書寫組件不是本文檔的重點,下面僅給出一個組件的例子并說明邏輯層的調用方法,你會發現其實邏輯層是個官僚,處理層是下屬,呵呵。

1創建處理層組件

下面的組件是我為公司寫的數據庫處理組件的簡化版本,考慮到篇幅和可讀性等問題,這里我簡化了它的功能(象數據分頁、批量更新、獲取字段數和字段名稱,用set和get提高其擴展性、對其他連庫方法的支持等都沒有出現在下面的代碼中),使之包含所有常用的功能并使之更加清晰和易于理解;其二,我將連庫動作加到了構造函數中,這是個優點也是個缺點,優點是簡化了連庫動作,缺點是降低了通用性,我沒有添加設置數據源等方法,從而每當變換一次數據庫就需要改寫組件中的連接池名稱,這在做一個固定項目的時候是可以的,如果你需要set數據源,可以自行添加;
##使用組件的方法:
我這里說的是使用bean的通用方法,你建立自己的bean目錄可以仿照該例子。在你的站點根目錄下建立resin.conf中指定的存放bean的目錄,我上面的舉例是classes,那你就建立classes目錄,那么classes就是你站點的class根目錄。然后在下面依次建立com/gledecity/yesgo/sql,注意它們之間是父子關系,不是同級文件夾,然后將下面即將建立的DBBridge.java放到"站點根目錄/classes/com/gledecity/yesgo/sql"目錄下,然后將該文件上傳到服務器端即可。上面的步驟在微軟平臺上使用UltraDev之類的開發工具即可完成,當然手工也可以。

源文件如下:

//------------------------------------------------------------------------------
//File:DBBridge.java
//Copyright(c)2001-2002Mr.FengjunZhao.AllRightsReserved.
//Author:趙鳳君@06/18/01
//LastRevision:趙鳳君@01/18/2002
//Description:數據庫接口類。一個統一的數據庫接口,實現了邏輯層和數據層的徹底分離,封裝了常用的數據庫操作。主要功能是:連接數據庫、執行SQL語句、數據庫取值操作、數據分頁、清除數據、關閉數據庫等。
//Version:簡化版1.0
//------------------------------------------------------------------------------

//指定包目錄
packagecom.gledecity.yesgo.sql;

//導入包
importjava.sql.*;
importcom.caucho.sql.*;

publicclassDBBridge{
//聲明屬性
privateDBPoolpool;
privateConnectionconn;
privateResultSetrs;
privateStatementstmt;

//--------------------------------------構造函數---------------------------------
publicDBBridge(){
 pool=null;
 conn=null;
 rs=null;
 stmt=null;
 try{open();}
catch(java.sql.SQLExceptionex){ex.toString();}
}
//

//連接數據庫的方法
publicvoidopen()
throwsSQLException{
 if(conn!=null&&!conn.isClosed())
thrownewSQLException("Theconnectionhasbeenestablishedalready.");
 clear();
 pool=newDBPool();
 conn=pool.getPool("your_data_source_name").getConnection();
}

//執行SQL語句的方法,將JDBC中的executeQuary()和executeUpdate()兩個方法//合而為一,注意返回值為整形,
publicintexecSQL(StringsqlStmt)
throwsSQLException{
 if(conn==null||conn.isClosed())
thrownewSQLException("Thisconnectionhasnotbeenestablishedyet.");
 if(sqlStmt==null)
thrownewSQLException("SQL-statementisnull.");
 clear();
 conn.setAutoCommit(true);
 stmt=conn.createStatement();
 if(sqlStmt.toUpperCase().startsWith("SELECT")){
rs=stmt.executeQuery(sqlStmt);
return-1;
 }
 else{
intnumRow=stmt.executeUpdate(sqlStmt);
clear();
returnnum

網絡服務器 RedHatLinux

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特克斯县| 望谟县| 滨州市| 水城县| 西青区| 杭锦旗| 大渡口区| 龙江县| 石狮市| 常熟市| 淅川县| 乾安县| 永德县| 蚌埠市| 竹溪县| 凤庆县| 阳山县| 米脂县| 江孜县| 高阳县| 六枝特区| 博白县| 浙江省| 绥中县| 兴隆县| 喀喇沁旗| 安塞县| 云阳县| 利辛县| 文昌市| 宜川县| 兴义市| 罗平县| 彭山县| 云和县| 诏安县| 平乐县| 辽源市| 田阳县| 宜宾县| 卓尼县|