您的位置:首页 > 编程语言 > Java开发

24.Java核心技术—JDBC

2012-04-28 14:53 260 查看
1.Jdbc是Java平台访问数据库的唯一底层API,先看看几个典型的数据库连接方法,如mckoi、postgresql,mysql,oracle等数据库。

2.在连接数据库时,先要指定数据源url和驱动drivers,以及连接数据库用的用户名user和密码password,

如对于mckoi:drivers=com.mckoi.JDBCDriver url=jdbc:mckoi://localhost/

postgresql: drivers=org.postgresql.Driver url=jdbc:postgresql:COREJAVA

mysql: drivers=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/databasename

oracle: drivers=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:databasename

3.连接数据库时用的相关类和接口:DriverManager类是个工具类,帮助管理驱动,得到一个Connection对象。Connection接口代表数据库连接,可以把它看成是一个数据库。Statement接口,代表数据库的操作对象。ResultSet接口,代表查询结果。类和接口的使用方法如下:

Connection con=DriverManager.getConnection(url,user,password);

Statement sta=con.createStatement();

ResultSet rs=sta.executeQuery(sql);//执行select查询时使用的方法。

int count=sta.executeUpdate(sql)//执行insert、update、delete或DLL的语句(create table).返回受影响的记录总数。

boolean b=sta.execute(sql)//执行任何的sql语句,该语句如果返回一个结果集则返回true,这个方法既可以查询也可以更新。调用这个方法后,我们可以通过调

用sta.getResultSet和getUpdateCount()方法得到语句的执行结果。

4.我们要注意在连接数据库的时候,不能直接获得Connection对象,而是首先要先进行驱动加载。如Class.forName(drivers)或通过命令行参数的方式设置,即

java -Djdbc.drivers=com.mysql.jdbc.Driver

5. 使用Connection、Statement、ResultSet接口的时候要注意,每个Connection对象都可以创建一个或一个以上Statement对象,同一个Statement对象可以

用于多个不相关的命令和查询,但是一个Statement对象最多只能打开一个结果集。如果需要执行多个查询操作,且需要同时分析查询结果,那么必须要创建多个

Statement对象。最后使用完这些对象后要调用close关 闭。

6. 预备语句,PreparedStatement接口,它的意思就是对sql语句进行预处理,当我们要进行查询操作的时候,我们在对sql语句里的宿主变量赋值。如

String sql="select id,name age from Student where id=?",当我们要进行查询操作的时候,就给id一个值。而Statement每进行一次操作就要重写sql语句。

7.可滚动结果集和可更新结果集:可滚动结果集就是说对我们得到的结果集可以上下移动,可以得到结果集任何位置的值;可更新结果集,就是说如果结果集的值更新了

那么它可以自动的把更新的值存储到数据库中,不需要进行相应的操作来存储,反之亦然。

得可滚动和可更新结果集的方法:Statemet sta=con.createStatement(type,concurrency)

获得预备语句:PreparedStatement ps=con.prepareStatement(sql,type,concurrency),其中type表示是否可滚动,concurrency表示是否可更新。

type有TYPE_FORWARD_ONLY(结果集不能滚动)、TYPE_SCROLL_INSENSITIVE(可滚动,但对数据库变化不敏感)、

TYPE_SCROLL_SENSITIVE(可滚动,但对数据库变化不敏感)三个值。

concurrency有COUCUR_READ_ONLY(不可更新)、CONCUR_UPDATEBLE(可更新)两个值。

8.事物:将一组数据库操作变成原子操作。我们在进行jdbc的时候,如果要用到事物,首先要关闭自定提交机制,con.setAutoCommit(false);如果所有的数据库操作

都成功了,就手动提交。con.commit();如果有一个操作失败,就要回滚开始的时候,con.rollback()。当然,如果操作都成功我们也可以回滚。

1)保存点:它可以更好的控制回滚操作。创建一个保存点意味着稍后只需返回到这个点,而非事物的开头。

Statement stat=conn.createStatement();

stat.executeUpdate(command1);

Savepoint svpt=conn.setSavepoint();//设置保存点,回滚的时候,只返回到这里

stat.executeUpdate(command2);

if(....)conn.rollback(svpt);

.....

conn.commit();

2)批量更新:实例如下

Statement:Statement stat=conn.createStatement();

String command="create table...";

stat.addBatch(command);

while(...){command="insert into ...values ("+...+")"; stat.addBatch(command);}

int[] counts=stat.executeBatch();

PreparedStatement : PreparedStatement ps=con.prepareStatement(sql);

while(.....){

s.setXXX(1,XXX);
ps.setXXX(2,XXX);
ps.addBatch();}
ps.executeBatch();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: