java bean 更新数据库_一个javabean轻松实现对数据库的各种操作

本文以一个完整的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,现在我们来测试一下这个程序,创建一个测试页面:

hello

main.setConnectionManager(con);

con.login();

%>

if(main.isConnected())

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

main.processQuery();

%>

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值