MYSQL网页编程之JavaBean操纵Oracle数据库
每个人都在使用它。MySQL是开源LAMP组合的一个标准组件:Linux、Apache、MySQL和Perl/PHP。根据Evans的调查,LAMP组合的迅速推广很大程度上代表着MySQL的被广泛接受。oracle|数据|数据库本文以一个完全的JavaBean数据库会见程序扼要申明jsp操纵数据库。本程序由3个bean构成,个中WebConstants中界说全局变量,ConnectionManager办理数据库毗连,MainBean使用WebConstants和ConnectionManager操纵数据库。
起首界说全局变量,以下:
packageWebRelease;
publicinterfaceWebConstants
{
publicstaticfinalStringdriverClass="driverClass";
constuserIdistheuseridtoconnecttodatabase
publicstaticfinalStringuserId="comm";
constpassWdistheuserpasswordtoconnecttodatabase
publicstaticfinalStringpassWd="comm123";
consturlistheurltoconnecttodatabase
publicstaticfinalStringurl="jdbc:oracle:thin:@10.2.0.1:1521:ORCL";
publicstaticfinalStringselectType="select";
publicstaticfinalStringconnection="connection";
publicstaticfinalStringconnError="conError";
}
接着创立一个数据库毗连办理bean,以下:
packageWebRelease;
importjava.io.*;
importjava.beans.*;
importjava.util.*;
importjava.sql.*;
importWebRelease.WebConstants;
importoracle.jdbc.driver.*;
publicclassConnectionManagerimplementsWebConstants
{
privatebooleandebug=true;
protectedConnectioncon;
protectedDebugWriterwriter;
PropertyChangeSupportpcs;
////////////////////////////////////////////////////////////////////////////////
publicConnectionManager()
{
pcs=newPropertyChangeSupport(this);
writer=newDebugWriter();
}
////////////////////////////////////////////////////////////////////////////////
publicvoidsetDebug(Stringb)
{
debug=b.equals("true");
}
////////////////////////////////////////////////////////////////////////////////
publicvoidaddPropertyChangeListener(PropertyChangeListenerl)
{
pcs.addPropertyChangeListener(l);
}
////////////////////////////////////////////////////////////////////////////////
publicvoidremovePropertyChangeListener(PropertyChangeListenerl)
{
pcs.removePropertyChangeListener(l);
}
////////////////////////////////////////////////////////////////////////////////
publicvoidlogin()
{
try
{
DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(Exceptione)
{
if(debug){writer.writeDebug("Errorsettingdriver:"+e.getMessage());}
}
try
{
con=DriverManager.getConnection(url,userId,passWd);
pcs.firePropertyChange(connection,null,con);
if(debug)
{
writer.writeDebug("connectionsucceded!URL:"+url+"User:"+userId+
"Pwd:"+passWd);
}
}
catch(Exceptione)
{
pcs.firePropertyChange(connError,null,e);
if(debug)
{
writer.writeDebug("connectionfailed!URL:"+url+"User:"+userId+
"Pwd:"+passWd);
}
}
}
}
在MainBean中,侦听数据库是不是毗连,假如毗连则对数据库举行操纵:
packageWebRelease;
importjava.io.*;
importjava.beans.*;
importjava.util.*;
importjava.sql.*;
importWebRelease.*;
publicclassMainBeanimplementsPropertyChangeListener,WebConstants
{
privatebooleandebug=true;
protectedConnectioncon;
protectedDebugWriterwriter;
////////////////////////////////////////////////////////////////////////////////
publicMainBean()
{
writer=newDebugWriter();
}
////////////////////////////////////////////////////////////////////////////////
publicvoidpropertyChange(PropertyChangeEventevt)
{
Stringprop=evt.getPropertyName();
//seeifwegotaconnection
if(prop.equals(connection))
{//oksoupdatethelocalconnection
try
{
//makesureitreallyisaconnection
con=(Connection)evt.getNewValue();
}
catch(Exceptione)
{
writer.writeDebug("Errorconnectingtodatabase"+e.getMessage());
}
}
}
////////////////////////////////////////////////////////////////////////////////
publicvoidsetConnectionManager(ConnectionManagercm)
{
if(cm!=null)
{
//toremovetheoldlistenerfromcm
//toavoidconfusioninthemainbean
cm.removePropertyChangeListener(this);
cm.addPropertyChangeListener(this);
if(debug)
{
writer.writeDebug("MainBean;Setconnectionmanager"+cm.toString());
}
}
else
{
if(debug)
{
writer.writeDebug("MainBean;Triedtosetanullconnectionmanager");
}
}
}
////////////////////////////////////////////////////////////////////////////////
publicbooleanisConnected()
{
//seeifdatatabeisconnected
return(con!=null);
}
////////////////////////////////////////////////////////////////////////////////
publicvoidprocessQuery()
{
try
{
Statementstmt=con.createStatement();
ResultSetrs=stmt.executeQuery("select*fromhelloorderbyid");
writer.writeDebug("select*fromhelloorderbyid");
while(rs.next())
{
writer.writeDebug("next");
Stringstr=rs.getString("name");
writer.writeDebug(str+" ");
}
rs.close();
}
catch(Exceptione)
{
}
}
}
OK,如今我们来测试一下这个程序,创立一个测试页面:
<%@pagecontentType="text/html;charset=gb2312"%>
<html>
<head>
<title>
hello
</title>
</head>
<bodybgcolor="#ffffc0">
<h1>
<jsp:useBeanid="main"class="WebRelease.MainBean"scope="session"/>
<jsp:useBeanid="con"class="WebRelease.ConnectionManager"scope="session"/>
<%
main.setConnectionManager(con);
con.login();
%>
<%
if(main.isConnected())
out.print("mainbeanconnectsuccess!!!");
main.processQuery();
%>
</h1>
</body>
</html>
在tomcat中扫瞄这个页面,我们应当能够看到输入“Mainbeanconnectsucess!!!”
正文不是太多,但愿你能看分明。
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。 总感觉自己还是不会SQL 原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜! 从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。 我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力 代替了原来VB式的错误判断。比Oracle高级不少。
页:
[1]