分享
 
 
 

一个javabean对数据库的各种操作

王朝java/jsp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

本文以一个完整的JavaBean数据库访问程序简要说明jsp操作数据库。

本程序由3个bean组成,其中WebConstants中定义全局变量,ConnectionManager管理数据库连接,MainBean利用WebConstants和ConnectionManager操作数据库。

首先定义全局变量,如下:

package WebRelease;

public interface WebConstants

{

public static final String driverClass ="driverClass";

const userId is the user id to connect to database

public static final String userId ="comm";

const passWd is the user password to connect to database

public static final String passWd ="comm123";

const url is the url to connect to database

public static final String url="jdbc:oracle:thin:@10.2.0.1:1521:ORCL";

public static final String selectType ="select";

public static final String connection ="connection";

public static final String connError ="conError";

}

接着创建一个数据库连接管理bean,如下:

package WebRelease;

import java.io.*;

import java.beans.*;

import java.util.*;

import java.sql.*;

import WebRelease.WebConstants;

import oracle.jdbc.driver.*;

public class ConnectionManager implements WebConstants

{

private boolean debug = true;

protected Connection con;

protected DebugWriter writer;

PropertyChangeSupport pcs;

////////////////////////////////////////////////////////////////////////////////

public ConnectionManager()

{

pcs = new PropertyChangeSupport(this);

writer = new DebugWriter();

}

////////////////////////////////////////////////////////////////////////////////

public void setDebug(String b)

{

debug = b.equals("true");

}

////////////////////////////////////////////////////////////////////////////////

public void addPropertyChangeListener( PropertyChangeListener l)

{

pcs.addPropertyChangeListener(l);

}

////////////////////////////////////////////////////////////////////////////////

public void removePropertyChangeListener(PropertyChangeListener l)

{

pcs.removePropertyChangeListener(l);

}

////////////////////////////////////////////////////////////////////////////////

public void login()

{

try

{

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

Class.forName("oracle.jdbc.driver.OracleDriver");

}

catch(Exception e)

{

if(debug) { writer.writeDebug("Error setting driver:"+e.getMessage());}

}

try

{

con = DriverManager.getConnection(url,userId,passWd);

pcs.firePropertyChange(connection,null,con);

if(debug)

{

writer.writeDebug("connection succeded ! URL:"+url+"User:"+userId+

"Pwd:"+passWd);

}

}

catch(Exception e)

{

pcs.firePropertyChange(connError,null,e);

if(debug)

{

writer.writeDebug("connection failed ! URL:"+url+"User:"+userId+

"Pwd:"+passWd);

}

}

}

}

在MainBean中,侦听数据库是否连接,如果连接则对数据库进行操作:

package WebRelease;

import java.io.*;

import java.beans.*;

import java.util.*;

import java.sql.*;

import WebRelease.*;

public class MainBean implements PropertyChangeListener ,WebConstants

{

private boolean debug = true;

protected Connection con;

protected DebugWriter writer;

////////////////////////////////////////////////////////////////////////////////

public MainBean()

{

writer = new DebugWriter();

}

////////////////////////////////////////////////////////////////////////////////

public void propertyChange(PropertyChangeEvent evt)

{

String prop = evt.getPropertyName();

//see if we got a connection

if(prop.equals(connection))

{//ok so update the local connection

try

{

//make sure it really is a connection

con = (Connection)evt.getNewValue();

}

catch(Exception e)

{

writer.writeDebug("Error connecting to database"+e.getMessage());

}

}

}

////////////////////////////////////////////////////////////////////////////////

public void setConnectionManager(ConnectionManager cm)

{

if(cm != null)

{

// to remove the old listener from cm

// to avoid confusion in the mainbean

cm.removePropertyChangeListener(this);

cm.addPropertyChangeListener(this);

if(debug)

{

writer.writeDebug("MainBean;Set connection manager"+ cm.toString());

}

}

else

{

if(debug)

{

writer.writeDebug("MainBean;Tried to set a null connection manager");

}

}

}

////////////////////////////////////////////////////////////////////////////////

public boolean isConnected()

{

//see if datatabe is connected

return (con != null);

}

////////////////////////////////////////////////////////////////////////////////

public void processQuery()

{

try

{

Statement stmt=con.createStatement();

ResultSet rs=stmt.executeQuery("select * from hello order by id");

writer.writeDebug("select * from hello order by id");

while(rs.next())

{

writer.writeDebug("next");

String str=rs.getString("name");

writer.writeDebug(str+"  &nbsp   ");

}

rs.close();

}

catch(Exception e)

{

}

}

}

OK,现在我们来测试一下这个程序,创建一个测试页面:

<%@ page contentType="text/html; charset=gb2312" %>

<html>

<head>

<title>

hello

</title>

</head>

<body bgcolor="#ffffc0">

<h1>

<jsp:useBean id="main" class="WebRelease.MainBean" scope ="session"/>

<jsp:useBean id="con" class="WebRelease.ConnectionManager" scope ="session"/>

<%

main.setConnectionManager(con);

con.login();

%>

<%

if(main.isConnected())

out.print("mainbean connect success!!!");

main.processQuery();

%>

</h1>

</body>

</html>

在tomcat中浏览这个页面,我们应该可以看到输出“Mainbean connect sucess!!!”

注释不是太多,希望你能看明白。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有