为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数据库连接和数据库操作

2019-01-12 9页 doc 25KB 38阅读

用户头像

is_079973

暂无简介

举报
数据库连接和数据库操作数据库连接和数据库操作1.数据库连接ZCF连接数据库是通过从连接池中获取已经在database.xml文件中配置好的连接来实现的。连接配置比较简单,都是在配置文件database.xml中进行配置,详细配置说明请参看数据库连接池。执行数据库操作的时候默认是取name=”Default”配置的连接。如果想获得其他连接可以通过以下代码(代码摘自附件DBConnExample.java.)实现:DataAccessda=newDataAccess(DBConnPool.getConnection("...
数据库连接和数据库操作
数据库连接和数据库操作1.数据库连接ZCF连接数据库是通过从连接池中获取已经在database.xml文件中配置好的连接来实现的。连接配置比较简单,都是在配置文件database.xml中进行配置,详细配置说明请参看数据库连接池。执行数据库操作的时候默认是取name=”Default”配置的连接。如果想获得其他连接可以通过以下代码(代码摘自附件DBConnExample.java.)实现:DataAccessda=newDataAccess(DBConnPool.getConnection("example"));使用以上请注意关闭数据库连接,用法代码示例://取得配置连接名字为example的连接DataAccessda=newDataAccess(DBConnPool.getConnection("example"));//构造QueryBuilder实例QueryBuilderqb=newQueryBuilder("select*fromzcexample");//将QueryBuilder实例置入取得连接的da,这样数据库进行sql查询的时候使用的是example连接,执行查询后得到DataTable.DataTabledt=da.executeDataTable(qb);//输出dtSystem.out.println(dt);//输出dt中列名为Name的所有值for(inti=0;i<dt.getRowCount();i++){System.out.println("姓名:"+dt.getString(i,"Name"));}//最后关闭数据库连接if(da!=null){try{da.close();}catch(Exceptione){e.printStackTrace();//TODO:handleexception}}结果图如下:图:数据库连接程序运行结果演示中使用默认连接配置如下:<databasename="Default"><configname="Type">MYSQL</config><configname="ServerAddress">localhost</config><configname="Port">3306</config><configname="Name">泽元开发框架</config><configname="UserName">root</config><configname="Password">10301</config><configname="MaxConnCount">1000</config><configname="InitConnCount">0</config><configname="TestTable">ZDMaxNo</config></database>2.数据库操作2.1数据库操作系统概述Web应用中数据持久化的首选当属关系型数据库,所以J2EE开发人员大部分的开发时间会花费在数据库操作上,但使用JDBC直接操作数据库存在很多不便之处,因此需要对JDBC进行进一步的封装,以更为合理的方式使数据库操作与业务逻辑接合。一般而言,数据库操作需要考察以下几个问题:1)能不能不修改程序自动支持多种数据库?2)能不能对数据库连接进行有效的监控以防止连接泄漏?3)能不能不需要开发人员手工管理连接的关闭?4)能不能一条语句就得到想要的数据集?5)得到数据集后能不能便利地按行、按列、按字段名找到指定值?6)得到数据集后能不能对行、列进行增、删、改操作?7)得到数据集后能不能进行排序、筛选等操作?8)能不能方便地分页提取数据集?9)一张数据表通常代表着一个业务实体,有没有一种面向对象的方式操作数据,使得开发人员不需要小心翼翼地拼写字段名称?10)能不能方便地使用事务?11)数据经常需要进行修改、删除等对业务逻辑有着重要影响的操作,如何保存数据的历史版本,以便于错误操作之后进行恢复?12)SQL注入是Web应用最为主要的安全问题,能不能提供一种统一的方法防止SQL注入?各个软件开发机构数据库操作的开发框架一般只对上述问题中的某几个给出肯定,对于其它方面则需要开发人员手工解决,而ZvingFramework通过一个轻量级的数据库操作API,在保持与直接操作JDBC同等性能的情况下对全部问题给出了肯定答案。2.2数据库连接池通过修改类文件根目录下(WEB应用是WEB-INF/classes)的database.xml中的databaeses节点来配置连接池,配置文件示例如下:<?xmlversion="1.0"encoding="UTF-8"?><framework><databases><databasename="Default"><configname="Type">MYSQL</config><configname="ServerAddress">10.1.43.78</config><configname="Port">3306</config><configname="Name">platform</config><configname="UserName">root</config><configname="Password">password</config><configname="MaxConnCount">1000</config><configname="InitConnCount">0</config><configname="TestTable">ZDMaxNo</config></database><databasename="DefaultOracle"><configname="Type">ORACLE</config><configname="ServerAddress">10.1.43.78</config><configname="Port">1521</config><configname="Name">orcl</config><configname="UserName">zcms</config><configname="Password">password</config><configname="MaxConnCount">1000</config><configname="InitConnCount">0</config><configname="TestTable">ZDMaxNo</config></database><databasename="Vounteer"><configname="DataSourceRef">JNDIRef</config><configname="TestTable">MDMaxNo</config></database></databases></framework>其中databaeses节点下可以有多个database子节点,每个子节点对应着一个连接池,name=”Default”的节点为默认连接池,各config子节点含义如下:name="Type":数据库类型,目前支持Oracle、DB2、Mssql、Mysql;name="ServerAddress":数据库服务器域名或IP地址;name="Port":数据库服务器端听的端口;name="Name":数据库用户名称;name="Password":数据库用户密码;name="MaxConnCount":连接池允许的最大连接数;name="InitConnCount":连接池初始化时建立的连接数量;name="TestTable":用来测试连接是否有效的数据库表名。也可以通过配置<configname="DataSourceRef">Ref</config>项使用中间件的连接池,其中JNDIRef表示中间件连接池在JNDI中的名称。3.一般数据库操作3.1执行SQL语句通过使用QueryBuilder类,可以方便地在数据库中执行SQL语句。QueryBuilder需要给定一个参数化的SQL语句,并设置它的参数,然后指定相应的操作方法即可操作数据库,而不需要手工管理Connection、Statement、ResultSet等对象,之所以使用参数化的SQL语句,而不是直接用字符串拼接SQL,是由于以下几点原因:1)用字符串拼接SQL会引入外部参数中不安全的SQL逻辑,从而受到SQL注入攻击(请参考SQL注入相关资料);2)QueryBuilder内部调用PreparedStatement处理参数化SQL,能够有效地避免SQL注入攻击;3)参数化SQL使得代码具有良好的可读性和可维护性。QueryBuilder有两类构造函数:1)带一个String参数,即指定的SQL语句;2)带二或三个参数,第一个参数为指定的参数化SQL语句,第二、第三个参数可以是int、long、String或者Object。通常的参数化SQL语句参数个数小于2个,所以通常使用第二类构造函数,直接指定参数。有的SQL语句参数个数大于2个,则需要使用第一类构造函数,先指定SQL语句,然后通过add方法设置参数。参数设置后,可以通过set方法进行修改。QueryBuilder拥有executePagedDataTable方法,以提供分页查询的能力。QueryBuilder自动针对当前数据库类型形成分页SQL语句,使得只有当前页的数据载入内存,从而获得良好的性能。以下是代码示例:简单SQL查询:QueryBuilderqb=newQueryBuilder("select*fromuserwhereuserid=?",userid);DataTabledt=qb.executeDataTable();多参数SQL查询:QueryBuilderqb=newQueryBuilder("select*fromuserwhereuserid=?andaddtime=?andlastlogintime=?");
/
本文档为【数据库连接和数据库操作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索