您的位置:首页 > 其它

JDBC基础(二)

2010-05-09 00:33 127 查看
JDBC基础(二)
因为是基础篇,所以还是对每一步骤简单说明一下吧:

前面说是,注册驱动程序有多方法,Class.forName();是一种显式地加载.当一个驱

动程序类被Classloader装载后,在溶解的过程中,DriverManager会注册这个驱动类的实例.

这个调用是自动发生的,也就是说DriverManager.registerDriver()方法被自动调用了,当然

我们也可以直接调用DriverManager.registerDriver()来注册驱动程序,但是,以我的经验.

MS的浏览中APPLET在调用这个方法时不能成功,也就是说MS在浏览器中内置的JVM对该方法的

实现是无效的.

另外我们还可以利用系统属性jdbc.drivers来加载多个驱动程序:

System.setProperty(/"jdbc.drivers/",/"driver1:driver2:.....:drivern/");多个驱动程序之

间用/":/"隔开,这样在连结时JDBC会按顺序搜索,直到找到第一个能成功连结指定的URL的驱动

程序.

在基础篇里我们先不介绍DataSource这些高级特性.

在成功注册驱动程序后,我们就可以用DriverManager的静态方法getConnection来得

到和数据库连结的引用:

Connection conn = DriverManager.getConnection(url);

如果连结是成功的,则返回Connection对象conn,如果为null或抛出异常,则说明没有

和数据库建立连结.

对于getConnection()方法有三个重载的方法,一种是最简单的只给出数据源即:

getConnection(url),另一种是同时给出一些数据源信息即getConnection(url,Properties),

另外一种就是给出数据源,用户名和密码:getConnection(url,user,passwod),对于数据源信息.

如果我们想在连结时给出更多的信息可以把这些信息压入到一个Properties,当然可以直接压

入用户名密码,别外还可以压入指定字符集,编码方式或默认操作等一些其它信息.

在得到一个连结后,也就是有了和数据库找交道的通道.我们就可以做我们想要的操

作了.

还是先来介绍一些一般性的操作:

如果我们要对数据库中的表进行操作,要先缘故绑定一个语句:

Statement stmt = conn.createStatement();

然后利用这个语句来执行操作.根本操作目的,可以有两种结果返回,如果执行的查询

操作,返回为结果集ResultSet,如果执行更新操作,则返回操作的记录数int.

注意,SQL操作严格区分只有两个,一种就是读操作(查询操作),另一种就是写操作(更

新操作),所以,create,insert,update,drop,delete等对数据有改写行为的操作都是更新操作.

ResultSet rs = stmt.executeQuery(/"select * from table where xxxxx/");

int x = stmt.executeUpdate(/"delete from table where ....../");

如果你硬要用executeQuery执行一个更新操作是可以的,但不要把它赋给一个句柄,

当然稍微有些经验的程序员是不会这么做的.

至于对结果集的处理,我们放在下一节讨论,因为它是可操作的可选项,只有查询操作

才返回结果集,对于一次操作过程的完成,一个非常必要的步骤是关闭数据库连结,在你没有了

解更多的JDBC知识这前,你先把这一步骤作为JDBC操作中最最重要的一步,在以后的介绍中我会

不断地提醒你去关闭数据库连结!!!!!!!!!!!

按上面介绍的步骤,一个完成的例子是这样的:(注意,为了按上面的步骤介绍,这个例

子不是最好的)

try{

Class.forName(/"org.gjt.mm.mysql.Driver/");

}catch(Exception e){

System.out.println(/"没有成功加载驱动程序:/"+e.toString());

return;

}//对于象我这样的经验,可以直接从e.toString()的简单的几个字判断出异常原因,

//如果你是一个新手应该选捕获它的子类,如何知道要捕获哪几个异常呢?一个简单

//的方法就是先不加try{},直接Class.forName(/"org.gjt.mm.mysql.Driver/");,编

//译器就会告诉你要你捕获哪几个异常了,当然这是偷机取巧的方法,最好还是自己

//去看JDK文档,它会告诉你每个方法有哪些异常要你捕获.

Connection conn = null;

try{

conn = DriverManager.getConnection(

/"jdbc:mysql://host:3306/mysql/",

/"user/",

/"passwd/");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(/"select * from table/");

//rs 处理

[rs.close();]

[stmt.close();]

}

catch(Exception e){

System.out.println(/"数据库操作出现异常:/"+e.toString());

}

finally{

try{conn.close();}catch(Exception){}

}//不管你以前是学习到的关于数据库流程是如何操作的,如果你相信我,从现在开始,

//请你一定要把数据库关闭的代码写到finally块中,切切!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: