D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

日历

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

文章分类

搜索

  •  

最新评论



2.4  决策3:访问数据库

无论怎样组织和封装业务逻辑,最终你必须从数据库存取数据。在标准J2EE应用程序里,你主要有两种选择:JDBC,这需要进行大量低层的编码;实体bean,难用而且缺少有分量的特性。相比之下,使用轻量级框架最令人兴奋的是,你可以选择新的更强大的方式访问数据库,能显著减少必须编写的数据库访问相关代码量。下面,让我们来具体分析一下。

2.4.1  直接使用JDBC存在什么问题

近来,对象/关系型数据库映射框架(如JDO和Hibernate)和SQL映射框架(如iBATIS)的异军突起并非毫无根据。实际上,它们是Java社区反复受挫于JDBC的产物。为了理解新近框架产生的动因,让我们先探讨一下直接使用JDBC存在的问题。对多数应用程序来说,直接使用JDBC并非上佳选择,主要有如下3个原因。

n  开发和维护SQL困难而且耗时——一些开发人员发现编写大型、复杂的SQL语句相当困难。为反映数据库模式的变化,及时更新SQL语句也可能相当耗时。你需要仔细权衡,为了使用JDBC,损失可维护性是否值得。

n  SQL缺少可移植性——由于常常需要使用数据库专有的SQL,应用程序如要处理多种数据库,你就必须编写多个版本的SQL语句,维护可能成为噩梦。即使实际应用中你

的应用程序只用到一种数据库,但由于SQL缺少可移植性,有可能因此妨碍你使用更简单、更快捷的内存数据库,如对Hypersonic结构化查询语言数据库引擎(HSQLDB)进行测试。

n  编写JDBC代码耗时而且容易出错——为获取连接、创建和初始化制备语句(Prepared Statement),并通过关闭连接和制备语句进行清理,你必须编写大量样板代码。你还必须编写代码实现Java对象和SQL语句之间的映射。JDBC代码编写起来枯燥无味,而且容易出错。

如果你的应用程序必须直接执行SQL语句,那么前两个问题就不可避免。有时,为取得最佳性能,你必须用上SQL的十八般武艺,甚至包括厂商提供的专有特性。或者,出于各种业务上的原因,你的DBA可能要求完全控制应用程序执行的SQL语句,这样一来,你就无法使用那些即时(on the fly)生成SQL语句的持久层框架。通常,公司在其关系型数据库上的投入非常巨大,以致于与数据库协作的应用程序反倒显得不那么重要了。引用iBATIS in Action作者的一段话,有时“数据库,甚至SQL本身的生命周期比应用程序源代码还长,甚至在应用程序经历了多个版本后,它们仍然健在。有些情况下,应用程序已经用另一种语言重新编写,而SQL和数据库却仍变化不大”。如果直接使用SQL把你搞得焦头烂额,算你走运,有个框架可以直接执行SQL,而且比JDBC更易使用。当然了,那就是iBATIS。

2.4.2  使用iBATIS

我开发过的所有企业Java应用程序都直接执行SQL。早期的应用程序只使用SQL,后来则使用了持久层框架,并在一些组件里使用SQL。一开始,我使用普通的JDBC执行SQL语句,不过后来,我通常自己编写小型框架处理JDBC使用中比较枯燥的部分。Spring的JDBC类我也用过一段时间,它们可以消除大量样板代码。但是无论是我自己编写的框架还是Spring类,在将Java类映射成SQL语句时都存在问题,这正是我与iBATIS不期而遇时激动不已的原因。

除了能让应用程序与连接和制备语句彻底隔绝外,iBATIS还能用XML描述符文件把JavaBean映射成SQL语句。它使用Java bean的内省机制将bean属性映射到制备语句占位符,并从ResultSet构建bean。iBATIS还支持数据库生成主键,自动加载相关对象,实现缓存及延迟加载。这样一来,

iBATIS就消除了执行SQL语句带来的大量苦差事。在后面几章,包括第9章里,你会发现iBATIS可以显著简化执行SQL语句的那部分代码。你不必再编写大量低层JDBC代码,只需编写XML描述符文件,并调用一些iBATIS API即可。

2.4.3  使用持久层框架

当然,iBATIS无法解决开发和维护SQL带来的开销,也不能弥补SQL缺少可移植性的不足。要避免这些问题,只有使用持久层框架,它可以将领域对象映射到数据库上。持久层框架提供创建、获取和删除对象的API。当应用程序游历对象之间的关系时,它能自动从数据库加载对象,并在事务结束时自动更新数据库。持久层框架通过对象/关系映射可以自动生成SQL,一般这种映射由XML文档指定,该文档定义怎样将类映射到表,属性映射到字段,以及怎样将关系映射成外键和连接表。

EJB 2也有持久层框架的功能有限的形式:实体bean。不过,EJB 2实体bean的不足实在太多,并且开发和测试也极其枯燥乏味。因此,应该尽量少用EJB 2实体bean。此外,正如我在第10章里描述的,目前还不确定EJB 3将解决多少不足。

两种最流行轻量级持久层框架是Sun公司标准JDO[JSR12][JSR243]和开源项目Hibernate。两者都提供POJO类的透明持久化。你可以直接使用POJO类开发和测试自己的业务逻辑,不用担心持久化,然后把这些类映射到数据库模式。此外,这两种框架都可以在应用服务器里面和外面运行,从而进一步简化开发。用Hibernate和JDO进行开发比用旧式的EJB2的实体bean要舒服得多。

本书有好几章描述怎样有效使用JDO和Hibernate。在第5章,你将学习如何使用JDO持久化领域模型。第6章则讨论如何使用Hibernate持久化领域模型。在第11章,你将学习如何使用JDO和Hibernate高效查询大型数据库及处理庞大的结果集。

除了决定怎样访问数据库外,你还必须决定如何处理数据库并发。下面让我们分析一下并发处理为何重要,以及可用的选项。


原文:http://book.csdn.net/bookfiles/367/10036714013.shtml

posted @ 2008-02-19 14:13 巴西木 阅读(995) | 评论 (1)编辑 收藏

内容摘要:Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。

  经过数年的“框架大战”,Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的Jboss Seam作为挑战者之外,几乎难有劲敌。

  Java B/S编程中历来战火最激烈的其实还在Web层,框架的数量最多,争议最大。一切由Struts而起,而Struts最终也坐稳了第一个时代的王座。在技术层面,Struts 1.x已经被无数人抱怨过、批评过,但终于还是稳坐王位,这充分说明了习惯的力量。“稳定压倒一切”,这句话在IT技术领域仍旧适用。

  在2007年CSDN举办的调查中,我们详细的分析了Java开发框架的使用状况,发现主要使用的开发框架JSP占26%,Struts占21%,Hibernate占17%,Spring MVC占11%,EJB占7%,JSF占6%,Spring Web Flow和POJO各占4%,其它占4%。就这一调查数据,我们不难看出,Spring+Hibernate+Struts的优势地位还是相当的明显。

  Spring+Hibernate+Struts优势地位凸显

  Struts和Hibernate几乎已经成了JavaEE应用的常规配置,21%的开发者用到 Struts,用到Hibernate的开发者也有17%;在一个成熟的技术平台上,各个项目的技术方案会在很大程度上趋同——因为所有未知领域都已经被探明,各种问题都有对应的最佳实践,架构师们可以参考的成功案例越来越多。就拿 JavaEE来说,今天的架构师们需要考虑的问题比之三年前已经简单多了,这就是成熟的价值。

  有专家评论:“其实IT应用技术,什么新鲜玩意并不难学,难的是标准化和规范化。每个程序员都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的占重要地位,很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的大型项目,便于沟通和理解,也就便于集成和维护。

  Java世界为什么会框架横飞,说到底还是规范化的需要。纯JSP和Struts写Web谁快,摆明了是JSP。那为什么用Struts?原因在于100个人写出来的 JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在Java Web层的规范化方面所做出的贡献。

  然而长江后浪推前浪,Struts 1.x的技术缺陷毕竟是隐患。Sun力推JSF,打算一雪Web层框架缺失之耻。JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。未来两年,JSF与Struts将展开Java Web框架的最终战争。”

  JSP经过几年风雨洗礼依然把持头把交椅,看来所有的框架表示层都离不开JSP而存在,而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。JSF能否实现JSP的合理过渡我们还要侍目以待,JSF是否能够撼动Struts也是值得我们期待。

posted @ 2008-02-19 13:35 巴西木 阅读(303) | 评论 (1)编辑 收藏

一、ASP的对象存取数据库方法
在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、Command
Connection:负责打开或连接数据
Recordset:负责存取数据表
Command:负责对数据库执行行动查询命令

二、连接各数据库的驱动程序
连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常方便、简单,而使用数据源比较麻烦。

ODBC链接

适合数据库类型 链接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"


OLEDB链接

适合的数据库类型 链接方式
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"
Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"
MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties′text;FMT=Delimited′"


而我们在一般情况下使用Access的数据库比较多,在这里我建议大家连接Access数据库使用下面的方法:

dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("../db/bbs.mdb")

其中../db/bbs.mdb是你的数据库存放的相对路径!如果你的数据库和ASP文件在同一目录下,你只要这样写就可以了:

dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("bbs.mdb")

有许多初学者在遇到数据库连接时总是会出问题,然而使用上面的驱动程序只要你的数据库路径选对了就不会出问题了。

posted @ 2008-02-18 16:19 巴西木 阅读(260) | 评论 (0)编辑 收藏

相信大家对PHP已经很熟悉了。PHP内置了几乎对世界上所有的数据库的支持,而不再需要重新扩充。所以有人说:不会用PHP调用数据库,等于没学PHP。下面是笔者根据本人的操作经验和大侠们的意见而得出的总结,希望能给初学者提供一些益处。  

相信大家对PHP已经很熟悉了。PHP内置了几乎对世界上所有的数据库的支持,而不再需要重新扩充。所以有人说:不会用PHP调用数据库,等于没学PHP。下面是笔者根据本人的操作经验和大侠们的意见而得出的总结,希望能给初学者提供一些益处。

PHP调用三种数据库的方法

本文比较详细的介绍PHP调用MySQL、ODBC以及ORACLE数据库。

MySQL是一个小巧灵珑的数据库服务器软件,对于中、小型应用系统是非常理想的。除了支持标准的ANSI SQL语句外,最重要的是,它还支持多种平台,而在Unix/Linux系统上,MySQL支持多线程运行方式,从而能获得相当好的性能。它和PHP、Apache一样,是属于开放源代码软件。其官方网站是:
http://www.mysql.com,上面提供Windows,Linux,Unix版本的源代码的下载。

注意,MySQL访问函数都需要有相应的权限才能运行。常用的相关函数介绍如下:

(1)integer mysql_connect(主机,用户名,口令); 

此函数开始一个对指定主机上的MySQL数据库的连接。若该数据库位于一个不同地端口,则在主机名后加上冒号和端口号。所有参数均为可选的,缺省情况下分别对应为本地主机、用户正在执行的脚本名和空。主机可以是IP地址或域名。

在脚本执行结束时,连接被自动关闭,也可以用mysql_close提前关闭。

(2)boolean mysql_create_db(数据库名); 

创建一个数据库。注意必须用一个带有创建数据库许可权的帐号打开连接。

(3)boolean mysql_select_db(数据库名,连接号); 

选择缺省数据库。 

(4)integer mysql_query(SQL语句,连接号); 

对指定数据库进行查询。如果SQL语句是select,则返回一个结果号,否则返回的值可以不理会。如果失败,返回false.。

(5)array mysql_fetch_array(结果号); 

取出下一行,返回一个数组.可以用数字下标访问(第一个字段是下标 0),也可以用字符串下标访问(即使用各字段名)。如已取了最后一行,返回 false.。

(6)mysql_fetch_row(结果号); 

返回一个矩阵代表结果集中一行的所有域。每次调用都会产生下一行,直到没有行剩下时返回false。每个域值都由一个从零开始的偏移量索引。这是从查询中获取结果的最快方法。

(7)integer mysql_num_rows(结果号);

返回结果集中行的数目

(8)integer mysql_num_fields(结果号); 

返回结果集中域的数目。

(9)integer mysql_list_dbs();

向服务器查询数据库列表。它返回一个结果指针,该指针可用于mysql_fetch_row函数及类似函数。

(10)mysql_list_tables(数据库名); 

获取一个指向指定数据库的表单列表的结果指针。该结果指针可用于任何从结果集中获取行的函数。

(11)mysql_close(连接号); 

关闭对数据库的连接。连接必须是由mysql_connect打开的。该函数的使用不是严格必需的,因为在脚本结束时,所有非永久链路都会被自动关闭。

(12)mysql_pconnect(主机,用户名,口令); 

与mysql_connect完全相似,但建立一个"永久连接",该连接一经建立永不关闭,即使使用mysql_close函数或程序执行完毕也不关闭.下一次试图建立永久连接时,系统如发现已存在一个永久连接,则直接返回该连接号而不重新创建。

下面是一个调用MYSQL数据库并分页显示的例子。

<?

$pagesize = 5; //每页显示5条记录

$host="localhost";

$user="user";

$password="psw"

$dbname="book"; //所查询的库表名;

//连接MySQL数据库

mysql_connect("$host","$user","$password") or die("无法连接MySQL数据库服务器!");

$db = mysql_select_db("$dbname") or die("无法连接数据库!");

$sql = "select count(*) as total from pagetest";//生成查询记录数的SQL语句

$rst = mysql_query($sql) or die("无法执行SQL语句:$sql !"); //查询记录数

$row = mysql_fetch_array($rst) or die("没有更多的记录!"); /取出一条记录

$rowcount = $row["total"];//取出记录数

mysql_free_result($rst) or die("无法释放result资源!"); //释放result资源

$pagecount = bcdiv($rowcount+$pagesize-1,$pagesize,0);//算出总共有几页

if(!isset($pageno)) {

$pageno = 1; //在没有设置pageno时,缺省为显示第1页

}

if($pageno<1) {

$pageno = 1; //若pageno比1小,则把它设置为1

}

if($pageno>$pagecount) {

$pageno = $pagecount; //若pageno比总共的页数大,则把它设置为最后一页

}

if($pageno>0) {

$href = eregi_replace("%2f","/",urlencode($PHP_SELF));//把$PHP_SELF转换为可以在URL上使用的字符串,这样的话就可以处理中文目录或中文文件名

if($pageno>1){//显示上一页的裢接

echo "<a href="" . $href . "?pageno=" . ($pageno-1) . "">上一页</a> ";

}

else{

echo "上一页";

}

for($i=1;$i<$pageno;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> "

}

echo $pageno . " ";

for($i++;$i<=$pagecount;$i++){

echo "<a href="" . $href . "?pageno=" . $i . "">" . $i . "</a> ";

}

if($pageno<$pagecount){//显示下一页的裢接

echo "<a href="" . $href . "?pageno=" . ($pageno+1) . "">下一页</a> ";

}

else{

echo "下一页 ";

}

$offset = ($pageno-1) * $pagesize;//算出本页第一条记录在整个表中的位置(第一条记录为0)

$sql = "select * from pagetest LIMIT $offset,$pagesize";//生成查询本页数据的SQL语句

$rst = mysql_query($sql);//查询本页数据

$num_fields = mysql_num_fields($rst);//取得字段总数

$i = 0;

while($i<$num_fields){//取得所有字段的名字

$fields[$i] = mysql_field_name($rst,$i);//取得第i+1个字段的名字

$i++;

}

echo "<table border="1" cellspacing="0" cellpadding="0">";//开始输出表格

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//显示字段名称

echo "<th>$field_name</th>";

}

echo "</tr>";

while($row=mysql_fetch_array($rst)){//显示本页数据

echo "<tr>";

reset($fields);

while(list(,$field_name)=each($fields)){//显示每个字段的值

$field_value = $row[$field_name];

if($field_value==""){

echo "<td> </td>";

}

else{

echo "<td>$field_value</td>";

}

}

echo "</tr>";

}

echo "</table>";//表格输出结束

mysql_free_result($rst) or die("无法释放result资源!");//释放result资源

}

else{

echo "目前该表中没有任何数据!";

}

mysql_close($server) or die("无法与服务器断开连接!");//断开连接并释放资源

?>

开放数据库连接(ODBC)已成为一种与数据库进行通信的工业标准。PHP也提供了标准的接口,使得PHP能调用Access,SQL SERVER等数据库。其相关函数是:

(1)integer odbc_connect(string dsn, string user, string password)

连接到一个ODBC数据库源名字上。

(2)integer odbc_exec(integer connection, string query)或 odbc_do(integer connection, string query)

在一个连接上执行查询。

(3)boolean odbc_fetch_row(integer result, integer row)

从一个结果集中获取一行数据。Row参数是可选的,若为空缺,则返回下一个有效行。在结果集中不再剩余行时返回false。

(4)boolean odbc_close(integer connection)

关闭一个数据库的连接。若在该连接上有打开的事务,则返回一个错误,而且连接不会被关闭。

最后,还是看个分页的例子:

<?

//设定每页显示条数

$show_num = 10;

$spages = $pages;//避免$pages后期被改变

//定义连接

$dsn = "localhost";

$user = "sa";

$password = "";

//计算总记录数

$rs_num = "select count(*) as id from bbs where zu='0' and lei='".$lei."'";

$conn_id = odbc_connect($dsn,$user,$password);

$rnum = odbc_exec($conn_id,$rs_num);

while(odbc_fetch_row($rnum)){

$total_rs = odbc_result($rnum,"id");//将总记录数放入$total_rs变量

}

//计算与页有关的条数

$nnn = $total_rs / $show_num;//计算总页数

$hnnn = intval($nnn);//将总页数取整

$cnnnn = $nnn - $hnnn;

//计算所需总页数

switch ($cnnn){

case "0":

$hnnn++;

$nnn = $hnnn;//总页数

break;

default :

$nnn = $hnnn;//总页数

break;

};

if ($nnn == 0)$nnn++;

//计算页面改变所需的条件

$fore = $pages;

$next = $pages;

$fore -= 1;

$next += 1;

if ($fore > 0) {

echo "<a>首页</a>";

echo "<a>前页</a>";

};

if ($pages < $nnn) {

echo "<a>后页</a>";

echo "<a>尾页</a>";

};

echo "".$nnn."";

$query_string = "SELECT * FROM table where condition order by you wanted order";

$cur = odbc_exec($conn_id,$query_string);

//取到循环的顶部

$cnum = ($pages-1) * $show_num;//计算当前的记录游标的位置

//空循环到显示记录游标处 
if ($cnum != 0){

for ($i=0;$i<=$cnum;odbc_fetch_row($cur)){$i++;};

};

$i=1;

//显示记录

while(odbc_fetch_row($cur)){

echo 

if ($i == $show_num){//在不满页数时跳出程序

break; 

};

$i++;

}; 

//关闭连接

odbc_close($conn_id);

?>

Oracle(甲骨文)是世界上最为流行的关系数据库。它是大公司推崇的工业化的强有力的引擎。我们先看看其相关的函数:

(1)integer ora_logon(string user , string password)

开始对一个Oracle数据库服务器的连接。

(2)integer ora_open(integer connection)

打开给出的连接的游标。

(3)integer ora_do(integer connection, string query)

在给出的连接上执行查询。PHP生成一个指示器,解析查询,并执行之。

(4)integer ora_parse(integer cursor, string query)

解析一个查询并准备好执行。

(5)boolean ora_exec(integer cursor)

执行一个先前由ora_parse函数解析过的查询。

(6)boolean ora_fetch(integer cursor)

此函数会使得一个执行过的查询中的行被取到指示器中。这使得您可以调用ora_getcolumn函数。

(7)string ora_getcolumn(integer cursor, integer column)

返回当前的值。列由零开始的数字索引。

(8)boolean ora_logoff(integer connection)

断开对数据库服务器的链接。

以下是向ORACLE数据库插入数据的示例程序: 

<html>

<head><title>向ORACLE数据库中插入数据</title></head>

<body>

<form action="<?echo $PHP_SELF;?>" method="post">

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<th>ID</th>

<th>name</th>

<th>Description</th>

</tr>

<tr>

<td><input type="text" name="name" maxlength="50" size="10"></td>

<td><input type="text" name="email" maxlength="255" size="30"></td>

<td><input type="text" name="Description" maxlength="255" size="50"></td>

</tr>

<tr align="center">

<td colspan="3"><input type="submit" value="提交">  <input type="reset" value="重写"></td>

</tr>

</table>

</form>

<?

//先设置两个环境变量ORACLE_HOME,ORACLE_SID

putenv("ORACLE_HOME=/oracle/app/oracle/product/8.0.4");

putenv("ORACLE_SID=ora8");

//设置网页显示中文

putenv("NLS_LANG=Simplified_Chinese.zhs16cgb231280");

if($connection=ora_logon("scott","tiger")) {

//库表test有ID,name,Description三项

$sql = 'insert into test(ID,name,Description) value'

$sql .= '('' . $ID . '','' . $name . '',''. $Description . '')';

if($cursor=ora_do($connect,$sql)) {

print("insert finished!");

}

$query = 'select * from test';

if($cursor=ora_do($connect,$query)) {

ora_fetch($cursor);

$content0=ora_getcolumn($cursor,0);

$content1=ora_getcolumn($cursor,1);

$content2=ora_getcolumn($cursor,2);

print("$content0");

print("$content1");

print("$content2");

ora_close($cursor);

}

ora_logoff($connection);

}

?>

</body>

</html> 

posted @ 2008-02-18 16:19 巴西木 阅读(277) | 评论 (0)编辑 收藏

一、jsp连接Oracle8/8i/9i数据库(用thin模式)



testoracle.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

二、jsp连接Sql Server7.0/2000数据库

testsqlserver.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >
三、jsp连接DB2数据库

testdb2.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

四、jsp连接Informix数据库

testinformix.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

五、jsp连接Sybase数据库

testmysql.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

六、jsp连接MySQL数据库

testmysql.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

七、jsp连接PostgreSQL数据库

testmysql.jsp如下:
< %@ page contentType="text/html;charset=gb2312"% >
< %@ page import="java.sql.*"% >
< html >
< body >
< %Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {% >
您的第一个字段内容为:< %=rs.getString(1)% >
您的第二个字段内容为:< %=rs.getString(2)% >
< %}% >
< %out.print("数据库操作成功,恭喜你");% >
< %rs.close();
stmt.close();
conn.close();
% >
< /body >
< /html >

posted @ 2008-02-18 15:35 巴西木 阅读(206) | 评论 (0)编辑 收藏

仅列出标题
共33页: First 25 26 27 28 29 30 31 32 33