JBuilder怎样和建立数据库的步骤控件建立联系

为数据库建立索引(一)
为数据库建立索引(一),为数据库建立索引(一)
就象许多的PHP开发者一样,在刚开始建立动态网站的时候,我都是使用相对简单的数据结构。PHP在连接数据库方面的确实是十分方便(译者注:有些人认为PHP在连接不同数据库时没有一个统一的接口,不太方便,其实这可以通过一些扩展库来做到这一点),你无需看大量的设计文档就可以建立和使用数据库,这也是PHP获得成功的主要原因之一。   前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过一些开发,但却对如何为数据库建立适当的索引所知较少,因此我起了写一篇相关文章的念头。  最普通的情况,是为出现在where子句的字段建一个索引。为方便讲述,我们先建立一个如下的表。  CREATE TABLE mytable (     id serial primary key,     category_id int not null default 0,     user_id int not null default 0,     adddate int not null default 0  );  很简单吧,不过对于要说明这个问题,已经足够了。如果你在查询时常用类似以下的语句:   SELECT * FROM mytable WHERE category_id=1;   最直接的应对之道,是为category_id建立一个简单的索引:   CREATE INDEX mytable_categoryid      ON mytable (category_id);  OK,搞定?先别高兴,如果你有不止一个选择条件呢?例如:   SELECT * FROM mytable WHERE category_id=1 AND user_id=2;  你的第一反应可能是,再给user_id建立一个索引。不好,这不是一个最佳的方法。你可以建立多重的索引。  CREATE INDEX mytable_categoryid_userid ON mytable (category_id,user_id);  注意到我在命名时的习惯了吗?我使用&表名_字段1名_字段2名&的方式。你很快就会知道我为什么这样做了。  现在你已经为适当的字段建立了索引,不过,还是有点不放心吧,你可能会问,数据库会真正用到这些索引吗?测试一下就OK,对于大多数的数据库来说,这是很容易的,只要使用EXPLAIN命令:  EXPLAIN   SELECT * FROM mytable     WHERE category_id=1 AND user_id=2;   This is what Postgres 7.1 returns (exactly as I expected)    NOTICE: QUERY PLAN:   Index Scan using mytable_categoryid_userid on      mytable (cost=0.00..2.02 rows=1 width=16)  EXPLAIN以上是postgres的数据,可以看到该数据库在查询的时候使用了一个索引(一个好开始),而且它使用的是我创建的第二个索引。看到我上面命名的好处了吧,你马上知道它使用适当的索引了。
来源:/n/1893.html
热门搜索:
怎样在电脑里面修改网卡速率
怎么在Excel中添加下拉箭头
怎样在Excel里修改标签添加工作表
PS人物美白教程 使用PS为漂亮MM皮肤美白教程
您可能会发现,经常看到在短视频有人在表演的时候说一些鼓励的话,然后就是双击666,听的您或许摸不清头脑,我就在这里为您解答一下,请给我点赞,让我解答更加有动力。
您是否熟悉我们生活的城市是怎么命名而来的呢?中国城市的命名可是有很深的文化底蕴和历史背景的,你都知道么?我从网上搜集了大量的城市名来源,让您好好的涨涨知识,您准备好了吗?
对于爱美人士来说,美白护肤是不分季节的,即使在冬季,依然需要做好皮肤护理工作。饮食调理是护肤的一项重要措施,那么冬天美白吃什么水果呢?接下来就和我一起来看看了解一下冬季美白吃什么水果好!
产妇顺产以后多久可以洗头发?有很多产妇为了防止自己受寒所以在产后不让自己洗头发,但是又特别难受,这篇文章讲述了产妇顺产以后多长时间可以洗头发,通过这篇文章了解产妇顺产以后多久可以洗头发吧。
阴阳师是现在相当火热的一款手游,最近阴阳师又有了新的更新,玩家可以通过挑战副本来获取妖刀姬樱雨刀舞皮肤。可是的很多人不知道阴阳师妖刀姬副本阵容是怎样的,下面就给大家来详细介绍吧。
阴阳师是现在很火热的一款手机游戏,这款游戏一直在更新完善,受到很多人的追捧,就在最近阴阳师又推出了小鹿男,小鹿男作为SSR式神,很多人对它还不是很了解,下面就给大家来介绍阴阳师小鹿男御魂以及阵容搭配吧。
我们在玩阴阳师完成悬赏任务的时候,都会要求玩家找到各种式神的位置,可是很多人不知道阴阳师跳跳哥哥在哪里刷、哪里多,下面就给大家来详细介绍吧,希望对大家玩游戏有所帮助。
京津冀及周边地区出现持续雾霾天气,很是让孕妈妈们担心。持续的雾霾天气对孕妇产生了很大的影响,那么雾霾天气对孕妇危害有多大?雾霾天气孕妇怎么办?下面的文章详细介绍 了雾霾天气对孕妇的危害,一起来看看吧。
我们知道宝宝刚刚出生的时候口腔里是没有牙齿的,一般孩子在四个月以后慢慢开始出牙,每个孩子的体质不一样,所以出牙的时间也是有所差异的,宝宝出牙的时候身体会出现一些症状,家长们要及时的护理好,下面一起来看看宝宝长牙的症状有哪些。
肚子上的赘肉看上去让人烦恼,尤其是对于想穿裙子的女生来说更是一件郁闷的事情。现在减肥的方法有很多,但是很多人并不知道专门瘦肚子的方法。那么,如何瘦肚子呢?下面就给大家介绍几种减肚子的方法吧。我在用jbuilder5连接access数据库时,无法对数据库进行插入删除操作
我在用jbuilder5连接access数据库时,无法对数据库进行插入删除操作
发布时间: 6:23:00
编辑:www.fx114.net
本篇文章主要介绍了"我在用jbuilder5连接access数据库时,无法对数据库进行插入删除操作
0",主要涉及到我在用jbuilder5连接access数据库时,无法对数据库进行插入删除操作
0方面的内容,对于我在用jbuilder5连接access数据库时,无法对数据库进行插入删除操作
0感兴趣的同学可以参考一下。
各位老大!我在用jbuilder5连接access数据库时,遇到如下问题
jb连接数据库,在jtable中可以看到数据,但无法对数据库进行插入
删除操作,他提示:
DataSet&has&no&unique&row&identifiers.
note:&for&querydatasets&you&need&to&disable&metaDataUpdate.ROWID&in&the&MetaDataUpdate&
property,&in&addition&to&setting&the&Rowld&property&on&a&column.
但当我取消了MetaDataUpdate&中的ROWID时,仍然无法进行数据库
的写操作!!!!!她提示:
[Microsoft][ODBC&Microsoft&Access&Driver]现在无法设置属性
搞得小弟我现在晕头转向!!!
请各位大虾不吝赐教!!!
万分感谢!我在建数据库中的表时,添加了主健
ID&自动编号
~~~~~~~~~~~
为什么还不行呢???DataSet有属性的...你需要设置的...
建议不要在DataSet里修改..出来修改后,添加,比较好什么意思?
能说的具体点吗?
是不建议用jb的控件连接数据库吗?
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:如何运用jbuilder中的控件开发 web 应用 ?
如何运用jbuilder中的控件开发 web 应用 ?
发布时间: 6:23:00
编辑:www.fx114.net
本篇文章主要介绍了"如何运用jbuilder中的控件开发 web 应用 ?
0",主要涉及到如何运用jbuilder中的控件开发 web 应用 ?
0方面的内容,对于如何运用jbuilder中的控件开发 web 应用 ?
0感兴趣的同学可以参考一下。
我想了解各位如何用&jbuilder开发&web,书上说只有awt中的控件才可用于web,
那末,如何用jbuilder开发web中诸如数据库方面的应用&?
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
jbuilder速成资料.pdf45页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:80 &&
你可能关注的文档:
··········
··········
下载 第6章
访 问数 据 创建数据应用程序的第一步就是访问存储在数据源中的信息,并创建一个备份,这样
数据就可以由应用程序本地操作。在 JBuilder
中,数据子集是从数据源中提取并导入到
JBuilder StorageDataSet 子类中的。使用的StorageDataSet 子类类型由获得信息的方式决定。 在继续开发应用程序之前,你可能希望浏览和/或编辑数据库数据和/或元数据
(M e t a D a t a )。你可以使用JDBC Explorer来完成: ? 浏览数据库模式对象。 ? 查看、创建、并且修改数据库U R L 。 ? 创建、查看、并且编辑现有表中的数据。 ? 输入并执行 S Q L结构化查询语句。 缺省情况下,所有的数据组件在内存存储空间
M e m o r y S t o r e
中存储行数据。现在,
考虑使用D a t a S t o r e 组件。D a t a S t o r e是个高性能、小规模、 1 0 0%纯J a v a 的多方面的数据
存储解决方案。它是: ?
内嵌的关系数据库,既有J D B C 界面,也有D a t a E x p r e s s 界面,它以崩溃恢复的方 式支持无阻塞的事务多用户访问。 ? 一个对象存储,用于存储串行化对象、数据集以及其他文件流。 ? 一个JavaBean 组件,它可以由诸如JBu i l d e r 的可视化的b e a n生成器来操纵。 一个纯J a v a 的可视化DataStore Explorer 帮助你管理D a t a S t o r e 。 在JB u i l d e r 中,有几种方法可访问数据。本主题的其他部分集中讨论如何使用
JBuilder 的DataExpress
结构来为应用程序提供数据。也可以使用 Data Modeler 和
Application Generator 来创建数据库应用程序。关于更多这方面的信息,见第 1 6章“用
Data Modeler 和Application Generator来创建数据库应用程序”。 为了在JBuilder
中使用DataExpress
组件访问数据,添加下列某个 S t o r a g e D a t a S e t子
类到应用程序中或到数据模
正在加载中,请稍后...利用Struts结合Jbuilder7、MySql建立Web站点(1)--连接数据库利用Struts结合Jbuilder7、MySql建立Web站点(1)--连接数据库 利用Struts结合Jbuilder7、MySql建立Web站点(1)--连接数据库(修改) 作者:Sailing(蓝色虾) 本程序全部源代码: 介绍:&&& 关于Struts的介绍请参考:&&& 关于Struts的中文版用户指南:(我们要特别的感谢曹晓刚先生的无私奉献,文章是他翻译的) &&& 本文主要讨论如何利用Jbuilder7结合Struts建立一个后台数据库为MySQL的Web站点。&& 站点功能分析:(1)本网站为一个VOD点播网站,要能够满足用户的在线收看,下载电影文件,进行站内搜索(2)网站内的所有影片分为足球射门、电影、搞笑片段、MTV四类别,并且在数据库中分别建立数据表(3)首页出现以上四大类别的最新加入的前十个影片的资料,点击每个类别旁的“更多”链接出现该类别所有影片,按加入顺序倒排(4)由于访问量大,使用数据库连接池。 (5)首页出现搜索栏,可以对以上四个类别中以影片名字作为关键字搜索(6)首页出现专题推荐, 点击相应专题的名称,出现该专题所有影片本篇文章的第一部分仅完成功能的(1)-(4) 准备:&&&&&& 首先我们从网上下载建立此Web站点需要的“包”,MySql的JDBC驱动程序可以在下载,JDBC2.0的可选包随本程序的源代码提供,Struts可以从得到,Servlet包由Jbuilder7提供。(1)打开Jbuilder7,建立一个新的工程(vod.jpx),将工程的默认编码改为GB2312,如下图: (2)将获得包加入Jbuilder的工程需要包中,如图: (3)建立一个Servlet和Jsp的空文件,分别将其执行,接着删除。(这样是为了JB自动建立相关的目录,并且获得Servlet的包)(4)用winrar或者winzip解开下载的Struts中的webapps目录下的struts-example.war和struts-documentation.war(Struts的文档),在struts-example.war解压后的WEB-INF目录下找到struts.tld、struts-bean.tld、struts-form.tld、struts-html.tld、struts-logic.tld、struts-template.tld文件,将其拷贝到在JB中建立的工程文件夹下的/WEB-INF目录下,然后在JB中将其加入工程,以免在Rebuild时JB将其删除。如图: (5)建立数据库,在MySql中建立一个名为gdvod的数据库,建立数据表需要的sql位于源代码目录src中的mysql.sql。数据表如下:表名:football列名类型说明idvarchar(10)唯一的IDfootballNamevarchar(50)影片的名称viewURLvarchar(255)在线观看的网址downURLvarchar(255)下载的网址clicksint(5)用户点击的次数sortvarchar(20)类别(默认:足球片段)introtext简介commendint(5)用户推荐次数datevarchar(20)加入日期badint(5)用户报告坏链接的次数lengthint(5)影片的长度其余的数据表于此类同,不同点在于fun、movie、mtv中的影片名称字段分别为funName、movieName、mtvName。建立Bean(1)与此对应,我们分别建立数据表相对于bean的映射。建立一个bean名为football,位于vod.mode包中代码如下:package vod. import java.sql.SQLEimport org.gjt.mm.mysql.jdbc2.ResultSimport java.io.Rimport java.io.BufferedRimport java.io.Spublic class Football implements Serializable {private Sprivate String footballNprivate String viewURL;private String downURL;private Sprivate Sprivate S//-------------------------------public void setId(String id){this.id=}public String getId(){}//-------------------------------public void setFootballName(String name){this.footballName=}public String getFootballName(){return footballN}//-------------------------------public void setViewURL(String url){this.viewURL=}public String getViewURL(){return viewURL;}//-------------------------------public void setDownURL(String url){this.downURL=}public String getDownURL(){return downURL;}//-------------------------------public void setClicks(int clicks){this.clicks=}public int getClicks(){}//-------------------------------public void setSort(String sort){this.sort=}public String getSort(){}//-------------------------------public void setIntro(String intro){this.intro=}public String getIntro(){}//-------------------------------public void setCommend(int commend){<mend=}public int getCommend(){}//-------------------------------public void setDate(String date){this.date=}public String getDate(){}//-------------------------------public void setBad(int bad){this.bad=}public int getBad(){}//-------------------------------public void setLength(int length){this.length=}public int getLength(){}public static Football load(ResultSet rs) throws SQLException{Football football=new Football();String strValue=int intValue=0;strValue=rs.getString("id");if(strValue!=null)football.setId(strValue);strValue=rs.getString("footballName");if(strValue!=null)football.setFootballName(strValue);strValue=rs.getString("viewURL");if(strValue!=null)football.setViewURL(strValue);strValue=rs.getString("downURL");if(strValue!=null)football.setDownURL(strValue);intValue=rs.getInt("clicks");if(intValue & 0)football.setClicks(intValue);strValue=rs.getString("sort");if(strValue!=null)football.setSort(strValue);strValue=rs.getString("intro");if(strValue!=null)football.setIntro(strValue);intValue=rs.getInt("commend");if(intValue & 0)football.setCommend(intValue);strValue=rs.getString("date");if(strValue!=null)football.setDate(strValue);intValue=rs.getInt("bad");if(intValue & 0)football.setBad(intValue);intValue=rs.getInt("length");if(intValue & 0)football.setLength(intValue);}}public static Football load(ResultSet rs)方法作为一个该bean的静态方法,接受传来的一个ReseltSet对象,并且在方法中生成了一个football的实例,将rs中的内容依次使用set方法赋给football,最后返回这个football实例这样做的目的在下面的数据库连接段的代码将有说明,能够很好的将数据进行封装。大家注意这里被注释掉的代码:这段代码在程序运行的时候报错:说MySql的JDBC2没有实现rs.getCharacterStream("intro")这个方法,我感到很意外,还是由于什么别的原因导致我不能使用这个方法,。由于在数据库中使用了text类型,将有大量的文本使用流读取将会提高程序的性能。其它三个bean的代码如下:package vod. import org.gjt.mm.mysql.jdbc2.ResultSimport java.sql.SQLEimport java.io.Rimport java.io.BufferedRimport java.io.Spublic class Fun implements Serializable {private Sprivate String funNprivate String viewURL;private String downURL;private Sprivate Sprivate S//-------------------------------public void setId(String id){this.id=}public String getId(){}//-------------------------------public void setFunName(String name){this.funName=}public String getFunName(){return funN}//-------------------------------public void setViewURL(String url){this.viewURL=}public String getViewURL(){return viewURL;}//-------------------------------public void setDownURL(String url){this.downURL=}public String getDownURL(){return downURL;}//-------------------------------public void setClicks(int clicks){this.clicks=}public int getClicks(){}//-------------------------------public void setSort(String sort){this.sort=}public String getSort(){}//-------------------------------public void setIntro(String intro){this.intro=}public String getIntro(){}//-------------------------------public void setCommend(int commend){<mend=}public int getCommend(){}//-------------------------------public void setDate(String date){this.date=}public String getDate(){}//-------------------------------public void setBad(int bad){this.bad=}public int getBad(){}//-------------------------------public void setLength(int length){this.length=}public int getLength(){}public static Fun load(ResultSet rs) throws SQLException{Fun fun=new Fun();String strValue=int intValue=0;strValue=rs.getString("id");if(strValue!=null)fun.setId(strValue);strValue=rs.getString("funName");if(strValue!=null)fun.setFunName(strValue);strValue=rs.getString("viewURL");if(strValue!=null)fun.setViewURL(strValue);strValue=rs.getString("downURL");if(strValue!=null)fun.setDownURL(strValue);intValue=rs.getInt("clicks");if(intValue & 0)fun.setClicks(intValue);strValue=rs.getString("sort");if(strValue!=null)fun.setSort(strValue);strValue=rs.getString("intro");if(strValue!=null)fun.setIntro(strValue);intValue=rs.getInt("commend");if(intValue & 0)fun.setCommend(intValue);strValue=rs.getString("date");if(strValue!=null)fun.setDate(strValue);intValue=rs.getInt("bad");if(intValue & 0)fun.setBad(intValue);intValue=rs.getInt("length");if(intValue & 0)fun.setLength(intValue);}}package vod. import org.gjt.mm.mysql.jdbc2.ResultSimport java.sql.SQLEimport java.io.Rimport java.io.BufferedRimport java.io.Spublic class Movie implements Serializable {private Sprivate String movieNprivate String viewURL;private String downURL;private Sprivate Sprivate S//-------------------------------public void setId(String id){this.id=}public String getId(){}//-------------------------------public void setMovieName(String name){this.movieName=}public String getMovieName(){return movieN}//-------------------------------public void setViewURL(String url){this.viewURL=}public String getViewURL(){return viewURL;}//-------------------------------public void setDownURL(String url){this.downURL=}public String getDownURL(){return downURL;}//-------------------------------public void setClicks(int clicks){this.clicks=}public int getClicks(){}//-------------------------------public void setSort(String sort){this.sort=}public String getSort(){}//-------------------------------public void setIntro(String intro){this.intro=}public String getIntro(){}//-------------------------------public void setCommend(int commend){<mend=}public int getCommend(){}//-------------------------------public void setDate(String date){this.date=}public String getDate(){}//-------------------------------public void setBad(int bad){this.bad=}public int getBad(){}//-------------------------------public void setLength(int length){this.length=}public int getLength(){}public static Movie load(ResultSet rs) throws SQLException{Movie movie=new Movie();String strValue=int intValue=0;strValue=rs.getString("id");if(strValue!=null)movie.setId(strValue);strValue=rs.getString("movieName");if(strValue!=null)movie.setMovieName(strValue);strValue=rs.getString("viewURL");if(strValue!=null)movie.setViewURL(strValue);strValue=rs.getString("downURL");if(strValue!=null)movie.setDownURL(strValue);intValue=rs.getInt("clicks");if(intValue & 0)movie.setClicks(intValue);strValue=rs.getString("sort");if(strValue!=null)movie.setSort(strValue);strValue=rs.getString("intro");if(strValue!=null)movie.setIntro(strValue);intValue=rs.getInt("commend");if(intValue & 0)movie.setCommend(intValue);strValue=rs.getString("date");if(strValue!=null)movie.setDate(strValue);intValue=rs.getInt("bad");if(intValue & 0)movie.setBad(intValue);intValue=rs.getInt("length");if(intValue & 0)movie.setLength(intValue);}}package vod. import org.gjt.mm.mysql.jdbc2.ResultSimport java.sql.SQLEimport java.io.Rimport java.io.BufferedRimport java.io.Spublic class Mtv implements Serializable {private Sprivate String mtvNprivate String viewURL;private String downURL;private Sprivate Sprivate S//-------------------------------public void setId(String id){this.id=}public String getId(){}//-------------------------------public void setMtvName(String name){this.mtvName=}public String getMtvName(){return mtvN}//-------------------------------public void setViewURL(String url){this.viewURL=}public String getViewURL(){return viewURL;}//-------------------------------public void setDownURL(String url){this.downURL=}public String getDownURL(){return downURL;}//-------------------------------public void setClicks(int clicks){this.clicks=}public int getClicks(){}//-------------------------------public void setSort(String sort){this.sort=}public String getSort(){}//-------------------------------public void setIntro(String intro){this.intro=}public String getIntro(){}//-------------------------------public void setCommend(int commend){<mend=}public int getCommend(){}//-------------------------------public void setDate(String date){this.date=}public String getDate(){}//-------------------------------public void setBad(int bad){this.bad=}public int getBad(){}//-------------------------------public void setLength(int length){this.length=}public int getLength(){}public static Mtv load(ResultSet rs) throws SQLException{Mtv mtv=new Mtv();String strValue=int intValue=0;strValue=rs.getString("id");if(strValue!=null)mtv.setId(strValue);strValue=rs.getString("mtvName");if(strValue!=null)mtv.setMtvName(strValue);strValue=rs.getString("viewURL");if(strValue!=null)mtv.setViewURL(strValue);strValue=rs.getString("downURL");if(strValue!=null)mtv.setDownURL(strValue);intValue=rs.getInt("clicks");if(intValue & 0)mtv.setClicks(intValue);strValue=rs.getString("sort");if(strValue!=null)mtv.setSort(strValue);strValue=rs.getString("intro");if(strValue!=null)mtv.setIntro(strValue);intValue=rs.getInt("commend");if(intValue & 0)mtv.setCommend(intValue);strValue=rs.getString("date");if(strValue!=null)mtv.setDate(strValue);intValue=rs.getInt("bad");if(intValue & 0)mtv.setBad(intValue);intValue=rs.getInt("length");if(intValue & 0)mtv.setLength(intValue);}}(2)建立一个名为DisplayWelcome的类,这个类的任务是基于所设置的Connection分别将四大类别中按照加入顺序倒排前十的条目放入四个LinkedList,并且返回所加入的LinkedList,以便于在Struts中的相关action中将其加入Session,便于在Jsp页面中显示。注意这里的所用到刚刚建立的bean的load方法,将利用这个bean的静态方法返回同一个bean的实例,并且将其加入到对应的LinkedList中。这样在LinkedList中保存的就是一个个具有不同数据的bean的实例,在jsp页面中可以很方便的利用其get方法将相关的数据内容取出。代码如下:package vod. import java.sql.Cimport org.gjt.mm.mysql.jdbc2.ResultSimport java.sql.PreparedSimport java.sql.Simport java.sql.SQLEimport java.util.LinkedLpublic class DisplayWelcome {Cpublic void setConn(Connection conn){this.conn=}public LinkedList getFootballList() throws SQLException{LinkedList footballLif(conn==null)throw new SQLException("No Connection in DisplayWelcomeAction");PreparedStatement pstmt =ResultSet rs =footballList=new LinkedList();try {// Prepare the query SQLpstmt = conn.prepareStatement("select * from football order by id desc");// Execute the query and copy the results// to a Listrs = (org.gjt.mm.mysql.jdbc2.ResultSet)pstmt.executeQuery();int i=0;while (rs.next() && i & 10) {footballList.add(Football.load(rs));i++;}}finally {if (rs != null)rs.close();if (pstmt != null)pstmt.close();}return footballL}public LinkedList getFunList() throws SQLException{LinkedList funLif(conn==null)throw new SQLException("No Connection in DisplayWelcomeAction");PreparedStatement pstmt =ResultSet rs =funList=new LinkedList();try {// Prepare the query SQLpstmt = conn.prepareStatement("select * from fun order by id desc");// Execute the query and copy the results// to a Listrs = (org.gjt.mm.mysql.jdbc2.ResultSet)pstmt.executeQuery();int i=0;while (rs.next() && i & 10) {funList.add(Fun.load(rs));i++;}}finally {if (rs != null)rs.close();if (pstmt != null)pstmt.close();}return funL}public LinkedList getMovieList() throws SQLException{LinkedList movieLif(conn==null)throw new SQLException("No Connection in DisplayWelcomeAction");PreparedStatement pstmt =ResultSet rs =movieList=new LinkedList();try {// Prepare the query SQLpstmt = conn.prepareStatement("select * from movie order by id desc");// Execute the query and copy the results// to a Listrs = (org.gjt.mm.mysql.jdbc2.ResultSet)pstmt.executeQuery();int i=0;while (rs.next() && i & 10) {movieList.add(Movie.load(rs));i++;}}finally {if (rs != null)rs.close();if (pstmt != null)pstmt.close();}return movieL}public LinkedList getMtvList() throws SQLException{LinkedList mtvLif(conn==null)throw new SQLException("No Connection in DisplayWelcomeAction");PreparedStatement pstmt =ResultSet rs =mtvList=new LinkedList();try {// Prepare the query SQLpstmt = conn.prepareStatement("select * from mtv order by id desc");// Execute the query and copy the results// to a Listrs = (org.gjt.mm.mysql.jdbc2.ResultSet)pstmt.executeQuery();int i=0;while (rs.next() && i & 10) {mtvList.add(Mtv.load(rs));i++;}}finally {if (rs != null)rs.close();if (pstmt != null)pstmt.close();}return mtvL}}(3)建立Action,在Struts中的页面的定位都是通过action来完成,action控制着网站程序因该调用哪一个BuinessBean来处理用户的请求。这里建立一个名为:DisplayWelcomeAction的Action的Action,这个action的任务是接受用户的请求,接着调用Struts自带的数据库连接池取得一个Connection,然后将这个数据库连接通过setConn()设置DisplayWelcome的一个实例,做后利用相应的getXXXList()方法取得对应的LinkedList,将其加入session,以方便内容载jsp页面的显示。代码如下:package vod. import vod.model.DisplayWimport java.io.IOEimport java.util.LinkedLimport java.util.Limport javax.servlet.RequestDimport javax.servlet.ServletEimport javax.servlet.http.HttpServletRimport javax.servlet.http.HttpSimport javax.servlet.http.HttpServletRimport org.apache.struts.action.Aimport org.apache.struts.action.ActionEimport org.apache.struts.action.ActionEimport org.apache.struts.action.ActionFimport org.apache.struts.action.ActionFimport org.apache.struts.action.ActionMimport org.apache.struts.action.ActionSimport org.apache.struts.util.MessageRimport java.sql.Cimport java.sql.SQLEimport javax.sql.DataSpublic class DisplayWelcomeAction extends Action {CLinkedList footballLLinkedList funLLinkedList movieLLinkedList mtvLpublic ActionForward perform(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{ActionErrors errors = new ActionErrors();try {DataSource dataSource =servlet.findDataSource(null);connection =dataSource.getConnection();footballList=new LinkedList();funList=new LinkedList();movieList=new LinkedList();mtvList=new LinkedList();DisplayWelcome displaywelcome=new DisplayWelcome();displaywelcome.setConn(connection);footballList=displaywelcome.getFootballList();funList=displaywelcome.getFunList();movieList=displaywelcome.getMovieList();mtvList=displaywelcome.getMtvList();if (footballList==null) {saveErrors(request, errors);return (new ActionForward("No footballList in vod.controller.DisplayWelcomeAction"));}if (funList==null) {saveErrors(request, errors);return (new ActionForward("No funList in vod.controller.DisplayWelcomeAction"));}if (movieList==null) {saveErrors(request, errors);return (new ActionForward("No movieList in vod.controller.DisplayWelcomeAction"));}if (mtvList==null) {saveErrors(request, errors);return (new ActionForward("No mtvList in vod.controller.DisplayWelcomeAction"));}HttpSession session = request.getSession();session.setAttribute("footballTop",footballList);session.setAttribute("funTop",funList);session.setAttribute("movieTop",movieList);session.setAttribute("mtvTop",mtvList);//do what you wish with myConnection} catch (SQLException sqle) {getServlet().log("Connection.process", sqle);} finally {//enclose this in a finally block to make//sure the connection is closedif(connection!=null)try {connection.close();} catch (SQLException e) {getServlet().log("Connection.close", e);}}return (mapping.findForward("success"));}}配置Struts:(1)此时bean和action都已经完成了,下面我们将配置Struts的相关xml文件了,首先在JB中打开web.xml文件,将以下内容加入web.xml文件:&!--指明action类所在的位置 --&&servlet&&servlet-name&action&/servlet-name&&servlet-class&org.apache.struts.action.ActionServlet&/servlet-class&&init-param&&!--指明ApplicationResources文件所在的位置 --&&param-name&application&/param-name&&param-value&vod.ApplicationResources&/param-value&&/init-param&&init-param&&!--指明struts-config.xml文件所在的位置 --&&param-name&config&/param-name&&param-value&/WEB-INF/struts-config.xml&/param-value&&/init-param&&init-param&&param-name&debug&/param-name&&param-value&2&/param-value&&/init-param&&init-param&&param-name&detail&/param-name&&param-value&2&/param-value&&/init-param&&init-param&&param-name&validate&/param-name&&param-value&true&/param-value&&/init-param&&load-on-startup&2&/load-on-startup&&/servlet&&!--经所有.do结尾的请求映射倒第一行指定的名为action的org.apache.struts.action.ActionServlet --& &servlet-mapping&&servlet-name&action&/servlet-name&&url-pattern&*.do&/url-pattern&&/servlet-mapping&&!--指明首页文件的名称 --& &welcome-file-list&&welcome-file&index.jsp&/welcome-file&&/welcome-file-list&&!--指明/struts-bean.tld文件的位置 --& &taglib&&!--在网页中引用这个标签的URI --& &taglib-uri&/WEB-INF/struts-bean.tld&/taglib-uri&&taglib-location&/WEB-INF/struts-bean.tld&/taglib-location&&/taglib&&!--指明struts-html.tld文件的位置 --& &taglib&&!--在网页中引用这个标签的URI --& &taglib-uri&/WEB-INF/struts-html.tld&/taglib-uri&&taglib-location&/WEB-INF/struts-html.tld&/taglib-location&&/taglib&&!--指明struts-logic.tld文件的位置 --& &taglib&&!--在网页中引用这个标签的URI --& &taglib-uri&/WEB-INF/struts-logic.tld&/taglib-uri&&taglib-location&/WEB-INF/struts-logic.tld&/taglib-location&&/taglib&(2)在工程目录的WEB-INF/目录中建立一个名为struts-config.xml的文件,内容如下:&xml version="1.0" encoding="ISO-8859-1" & &!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"&&struts-config&&!-- ========== 数据库连接池的相关设置=============================== --&&data-sources&&data-source&&set-property property="autoCommit"value="false"/&&set-property property="description"value="Data Source Configuration"/&&!-- 数据库的JDBC驱动程序地址 --& &set-property property="driverClass"value="org.gjt.mm.mysql.Driver"/&&!-- 最大数据库连接数 --&&set-property property="maxCount"value="200"/&&!-- 最小数据库连接数 --& &set-property property="minCount"value="20"/&&set-property property="password"value="你的数据库密码"/&&set-property property="url"value="jdbc:mysql://localhost/gdmovie"/&&set-property property="user"value="你的数据库的用户名"/&&/data-source&&/data-sources&&!-- ========== Global Forward Definitions ============================== --&&!--全局的跳转,将在本程序的index.jsp中使用--&&global-forwards&&forward name="welcome" path="/welcome.do"/&&/global-forwards&&!-- ========== Action Mapping Definitions ============================== --&&action-mappings&&!-- Enter into Welcome Page --&&!-- path:请求的URLtype:action所处的位置forward:如果action执行成功,那么跳转到welcome页--& &action path="/welcome"type="vod.controller.DisplayWelcomeAction"&&forward name="success" path="/welcome.jsp"/&&/action&&/action-mappings&&/struts-config&(3)在工程目录的WEB-INF/目录中建立一个名为action.xml的文件,内容如下:&!-- Action Mappings for the STRUTS Example Application --& &action-mappings&&!-- Global Forward Declarations --&&forward name="welcome" path="/welcome.do"/&&!-- Process a user logon --&&action path="/welcome"actionClass="vod.controller.DisplayWelcomeAction"&&forward name="success" path="/welcome.jsp"/&&/action&&/action-mappings&action.xml任务是指明在action内部的跳转,关于这方面我一直觉得这和struts-config.xml中的内容产生重复,不怎么理解这个action.xml文件存在的意义,我的领悟能力有限,。 建立Jsp页面(1)建立首页:由于这个页面第一个出现在用户面前的页面就含有数据库的读取,但是由于在Struts中所有的数据库的读取必须通过action调用相关的bean中的功能实现,所以这里的首页起的作用就是中转一下用户的请求,将其跳转到welcome.jsp,并且调转是由一个action负责,在跳转的同时在这个action中调用相关的bean读取数据库。代码如下:&%@ page contentType="text/ charset=GB2312" %&&%@ page language="java" %&&%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&&logic:forward name="welcome"/&这里的&logic:forward name="welcome"/&标签其实调用了&forward name="welcome" path="/welcome.do"/&,并且所有*.do结尾的请求映射到了action上,同时由于设置了&action path="/welcome"type="vod.controller.DisplayWelcomeAction"&&forward name="success" path="/welcome.jsp"/&&/action&DisplayWelcomeAction接受了这个请求,在数据库中将相关的内容读取,放入对应的LinkedList中,并且放入了session。(2)建立welcome.jsp,这个页面就是将放入session的LinkedList读出,进行iterate,将其呈现在网页上,注意这里标签的使用,代码如下:&%@ page contentType="text/ charset=GB2312" %&&%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&&%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&&%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&&html&&head&&title&welcome&/title&&/head&&body&&table width="694" border="1" cellspacing="0" cellpadding="0"&&tr&&td width="70"&&div align="center"&id&/div&&/td&&td width="110"&&div align="center"&footname&/div&&/td&&td width="82"&&div align="center"&viewURL&/div&&/td&&td width="92"&&div align="center"&downURL&/div&&/td&&td width="48"&&div align="center"&clicks&/div&&/td&&td width="41"&&div align="center"&sort&/div&&/td&&td width="40"&&div align="center"&intro&/div&&/td&&td width="66"&&div align="center"&commend&/div&&/td&&td width="61"&&div align="center"&date&/div&&/td&&td width="33"&&div align="center"&bad&/div&&/td&&td width="51"&&div align="center"&length&/div&&/td&&/tr&&%/*java.util.LinkedList link=new java.util.LinkedList();link=(java.util.LinkedList)session.getAttribute("footballTop");if(link!=null)out.print("true");elseout.print("false");*/%&&logic:iterate id="football" name="footballTop"&&tr&&td&&div align="center"&&bean:write name="football" property="id"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="footballName"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="viewURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="downURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="clicks"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="sort"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="intro"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="commend"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="date"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="bad"/&&/div&&/td&&td&&div align="center"&&bean:write name="football" property="length"/&&/div&&/td&&/tr&&/logic:iterate&&/table&&br&&table width="694" border="1" cellspacing="0" cellpadding="0"&&tr&&td width="70"&&div align="center"&id&/div&&/td&&td width="110"&&div align="center"&funname&/div&&/td&&td width="82"&&div align="center"&viewURL&/div&&/td&&td width="92"&&div align="center"&downURL&/div&&/td&&td width="48"&&div align="center"&clicks&/div&&/td&&td width="41"&&div align="center"&sort&/div&&/td&&td width="40"&&div align="center"&intro&/div&&/td&&td width="66"&&div align="center"&commend&/div&&/td&&td width="61"&&div align="center"&date&/div&&/td&&td width="33"&&div align="center"&bad&/div&&/td&&td width="51"&&div align="center"&length&/div&&/td&&/tr&&logic:iterate id="fun" name="funTop"&&tr&&td&&div align="center"&&bean:write name="fun" property="id"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="funName"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="viewURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="downURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="clicks"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="sort"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="intro"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="commend"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="date"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="bad"/&&/div&&/td&&td&&div align="center"&&bean:write name="fun" property="length"/&&/div&&/td&&/tr&&/logic:iterate&&/table&&br&&table width="694" border="1" cellspacing="0" cellpadding="0"&&tr&&td width="70"&&div align="center"&id&/div&&/td&&td width="110"&&div align="center"&moviename&/div&&/td&&td width="82"&&div align="center"&viewURL&/div&&/td&&td width="92"&&div align="center"&downURL&/div&&/td&&td width="48"&&div align="center"&clicks&/div&&/td&&td width="41"&&div align="center"&sort&/div&&/td&&td width="40"&&div align="center"&intro&/div&&/td&&td width="66"&&div align="center"&commend&/div&&/td&&td width="61"&&div align="center"&date&/div&&/td&&td width="33"&&div align="center"&bad&/div&&/td&&td width="51"&&div align="center"&length&/div&&/td&&/tr&&logic:iterate id="movie" name="movieTop"&&tr&&td&&div align="center"&&bean:write name="movie" property="id"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="movieName"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="viewURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="downURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="clicks"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="sort"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="intro"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="commend"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="date"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="bad"/&&/div&&/td&&td&&div align="center"&&bean:write name="movie" property="length"/&&/div&&/td&&/tr&&/logic:iterate&&/table&&br&&table width="694" border="1" cellspacing="0" cellpadding="0"&&tr&&td width="70"&&div align="center"&id&/div&&/td&&td width="110"&&div align="center"&mtvname&/div&&/td&&td width="82"&&div align="center"&viewURL&/div&&/td&&td width="92"&&div align="center"&downURL&/div&&/td&&td width="48"&&div align="center"&clicks&/div&&/td&&td width="41"&&div align="center"&sort&/div&&/td&&td width="40"&&div align="center"&intro&/div&&/td&&td width="66"&&div align="center"&commend&/div&&/td&&td width="61"&&div align="center"&date&/div&&/td&&td width="33"&&div align="center"&bad&/div&&/td&&td width="51"&&div align="center"&length&/div&&/td&&/tr&&logic:iterate id="mtv" name="mtvTop"&&tr&&td&&div align="center"&&bean:write name="mtv" property="id"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="mtvName"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="viewURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="downURL"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="clicks"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="sort"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="intro"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="commend"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="date"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="bad"/&&/div&&/td&&td&&div align="center"&&bean:write name="mtv" property="length"/&&/div&&/td&&/tr&&/logic:iterate&&/table&&/body&&/html&现在以footballTop进行iterate标签的说明,iterate标签的语法如下:&logic:iterate id="element" name="myhashtable"&Next element is &bean:write name="element" property="value"/&&/logic:iterate& 网页中使用的标签:&logic:iterate id="football" name="footballTop"&&tr&&td&&div align="center"&&bean:write name="football" property="id"/&&/div&&/td&&/tr&&/logic:iterate& 这里的footballTop是我在DisplayWelcomeAction中放入session的footballList的属性名字。相关代码--DisplayWelcomeAction:session.setAttribute("footballTop",footballList);id="football",是指放入这个LinkedList中的bean的名字。相关代码--DisplayWelcome:footballList.add(Football.load(rs)); Football: &bean:write name="football" property="id"/& property:是放了LinkedList中的football中的id的内容,但是必须要在football中有相应的getId()方法才能如此调用。 此时在中Run index.jsp便可以看见结果了。结尾:本程序全部源代码:我写着篇文章的目的只由于当时在网上只能找到很少的关于Struts的中文资料,特别来火,干脆自己就写了一篇。真心希望网上关于Java方面的中文资料能够越来越多。在使用Tomacat是产生了 ,,多谢了。关于作者:Sailing,就读于南京工业大学工商管理专业,爱好Java编程,熟悉网站制作,。工作室: &}

我要回帖

更多关于 建立数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信