java&数据库浅谈

在程序中,不可避免的要创建对象,最直接的做法就是new的方式了,我相信这个秘密java程序员都知道,但很少有人会直接用这招了吧。
A oa = new A();
像这种代码,叫“硬编码”,偶合性高,牵一发而必动全身啊。怎样软化呢?
这时,加上配置文件,通过对类路径从文件中读取,灵活度大大提高,很好让这个问题得到改善,再有各种设计模式的提出,嗯,就相当漂亮了。当然,配置文件的作用还不只如此,在很多需要动态、灵活改变的地方都可用到。

对于复杂的WEB业务,通过java代码能够解决,并且合理使用设计模式,灵活度也很高,但最好还是把数据处理业务放到数据库中处理,因为设计模式的使用,会写很多的类,相对还算是很复杂的了,如果在数据库中把业务处理了,只需在java程序中调用对应的存储过程或函数即可,是不是很简单啊。

谈到数据库了,要开发数据库应用程序,必须了解在java中如何操作数据库才行。
JDBC就是一套为了完成这项任务的Java API,它支持java程序对关系数据库的访问。那么怎样实现对数据库的操作呢?一般有如下几个步骤:
1、安装驱动
在连接数据库之前,必须要安装数据库对应的驱动
Class.forName(“JDBCDriverClass”);
2、建立连接
为了连接一个数据库,需要用DriverManager类中的getConnection()与数据库建立连接(获得连接对象)
3、创建语句对象
建立连接过后,就可想象成程序和数据库之间就有了一条通道,我们可以利用这条通道通过语句对象(Statement)与数据库“交流”了。
这儿的语句对象相当于是在程序和数据库间来往的小车,它为数据库传输SQL语句,并把运行结果带回程序。
4、执行语句
对于SQL DDL或数据库更新语句,使用executeUpdate(String sql)来执行,对于数据更新后,返回影响的行数。
对于SQL查询语句使用executeQuery(String sql)来执行,查询结果返回给ResultSet对象。
5、处理结果
对于ResultSet对象中的数据,可通过移动游标取出并处理。

现在可以对数据库访问了,但对于大规模的数据处理,我们还可以进一步忧化一下:
1、新的连接下,默认是自动提交模式,每条SQL语句都作为一个单独的事务执行并提交,我们可以调用SetAutoComit(false)取消自动提交,这时,在调用commit()或rollback()之前的所有语句都被组织成一个事务。
2、Statement对象,用于执行已确定的SQL语句(静态SQL),在数据库中,每条静态SQL都会进行编译、执行,这样有可能会重复编译、执行相同(或相似)的SQL语句,是不是感觉不爽呢?
我样可以使用预编译语句对象(PreparedStatement)解决这种问题,重复执行它们时效率会有很大提高。
如:Statement st = conn.createStatement("insert into t1(id,name) values(1,"aa")");
st = conn.createStatement("insert into t1(id,name) values(2,"bb")");
要执行这样的n条SQL语句,数据库则要分别编译、执行n次,其实这些SQL是不是相似啊,这样数据库做了很多重复的事情。
这种情况改用下面这样:
PreparedStatement pst = conn.prepareStatement("insert into t1(id,name) values(?,?)");
数据库则只对SQL语句进行一次编译操作,再动态赋值给点位符后直接执行SQL,而Statement要编译n次,是不是要舒服多了。
利用PreparedStatement,在安全性方面也有重要作用,就是可防止SQL注入的危险操作。
(当相对独立的、不需动态变化的SQL命令,用Statement)
3、上面的SQL语句,都是一条一条的提交给数据库,这对大量的数据处理(如对100000条数据更新命令)的效率不高,如何解决呢?JDBC中的批处理派上用场了。批处理是把非查询SQL命令成批提交给数据库,如可以一次给数据库提交100条、1000条甚至更多条SQL命令后再执行,是不是要比提交一条、执行一条,再提交一条,再执行一条这样快得多啊。
实现是通过语句对象的addBatch(sql语句)添加SQL命令,再调用语句对象的executeBatch()将多条SQL命令提交给数据库。
注意:此法只用于非查询SQL命令,即DDL和数据更新命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值