|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. 我们的第一个例子是简化的DAO体例,次要是在编程中引进了oop观点。
此次,我们将DAO补齐,但仍旧坚持最复杂的情势,以便初学者进修。
复杂的DAO形式组成:
1interface
2.Factory
3Implements
4.caller
第一个例子中的主程序NewsDAO.java代码没有修改,只是改了个名字,
成为implements.
packagenews;
importjava.sql.*;
publicclassNewsDAOMySQLimplementsNewsDAO
{
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
Stringurl="jdbc:mysql://localhost:3306/joke?user=root";
publicNewsDAOMySQL()
{
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(java.lang.ClassNotFoundExceptione){
System.err.println("joke():"+e.getMessage());
}
}
publicNewsgetNewsByPrimaryKey(intnewsid)throwsSQLException
{
Connectionconn=null;
Statementstmt;
ResultSetrs;
Newsnews=null;
Stringsql="selectnewsid,title,contentfromnews2"+
"wherenewsid="+newsid+"";
conn=getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
if(rs.next())
{
news=newNews(rs.getInt(1),rs.getString(2),rs.getString(3));
}
rs.close();
stmt.close();
conn.close();
returnnews;
}
privateConnectiongetConnection()throwsSQLException
{
Connectionconn=null;
conn=DriverManager.getConnection(url);
returnconn;
}
} 除第一句由
publicclassNewsDAO酿成了
publicclassNewsDAOMySQLimplementsNewsDAO
机关办法称号由NewsDAO()酿成NewsDAOMySQL(),这个程序与第一个例子并没有区分。
第二个程序是interface,十分复杂,由于我们只完成了一个办法,以是这儿也只要一个办法的声名,人人能够很简单地本人补上。
packagenews;
importjava.sql.SQLException;
publicinterfaceNewsDAO{
publicNewsgetNewsByPrimaryKey(intnewsid)throwsSQLException;
} 第三个程序是Factory.
我们的情况对照复杂,没有利用jndi,
packagenews;
publicclassNewsDAOFactory{
publicstaticNewsDAOgetDAO()throwsException{
NewsDAOnewsDao=null;
StringclassName="news.NewsDAOMySQL";
try{
newsDao=(NewsDAO)Class.forName(className).newInstance();
}
catch(Exceptionse){
}
returnnewsDao;
}
} 第四,挪用的jsp程序:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="news.*"%>
<%
//oldversionon2004-12-07
//NewsDAOnewsDao=newNewsDAO();
//newversionon2004-12-21
NewsDAOnewsDao=NewsDAOFactory.getDAO();
Newsnews=newsDao.getNewsByPrimaryKey(1);
if(news!=null){
out.println("TitlethruDAO:"+news.getTitle());
out.println("<br>");
out.println("Body:"+news.getContent());
}
elseout.println("Failed.");
%> 第五,本例所利用的POJO:News.java,没有任何修改,故不在此反复。
内网观察点:同第一例子。
更完全的例子,人人能够参考petstore的CatalogDAO.
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。 |
|