java访问数据库主要用的方法是JDBC,它是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
一:java访问数据库的具体步骤:
1:加载数据库
驱动加载就是把各个数据库提供的访问数据库的API加载到我们程序来,加载JDBC驱动,并将其注册到DriverManager中,每一种数据库提供的数据驱动不一样,加载驱动时要把jar包添加到lib文件夹下,下面看一下一些主流数据库的JDBC驱动注册的代码:
//Oracle8/8i/9iO数据库(thin模式)
Class.forName("orcal.jdbc.driver.OrcalDriver").newInstance();
//Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlServer.SQLServerDriver");
//Sql Server2005/2008数据库
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance(0;
//mysql数据库
Class.forName("com.mysql.jdbc.Driver").newInstance();
2:建立链接
建立数据库之间的连接是访问数据库的必要条件,就像南水北调一样,要想调水首先把沟通的河流打通。建立连接对于不同数据库也是不一样的。下面来看一些主流的数据库建立数据库连接,取得Connection对象.
//Oracle8/8i/9i数据库(thin模式)
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="scott";
String pasword="tiger";
Connection con=DriverManager.getConnection(url,user,password);
//sql Server7.0/2000/2005/2008数据库
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="a";
String password="";
COnnection conn=DriverManager.getConnection(url,user,password);
//DB2数据库
String url="jdbc:db2://localhost:5000/sample";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user.password);
//Mysql数据库
String url="jdbc:mysql://localhost:3306/testDBQ?user=root&password=root&useUnicode=true&characterEncoding=gb2312";
Connection conn=DriverManager.getConnection(url);
3.执行SQL语句
数据库连接建立好之后,接下来就是一些准备工作和执行sql语句了,准备工作要做的就是建立Statement对象和PreparedStatement对象,例如:
//建立Statement对象
Statement stmt=conn.createStatement();
//建立PreparedStatement对象
String sql="select * from user where userName=? and password=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,"admin");
pstmt.setString(2,"liubin");
做好准备工作之后就可以执行sql语句,执行sql语句:
String sql="select * from users";
ResultSet rs=stmt.excuteQuery(sql);
//执行动态sql查询
ResultSet rs=pstmt.excuteQuery();
//执行insert update delete等语句,先定义sql
stmt.excuteQuery(sql);
4.处理结果集:
访问结果集ResultSet对象。例如:
while(rs.next){
System.out.println("你的第一个字段内容为:"+rs.getString("Name"));
System.out.println("你的第二个字段内容为:"+rs.getString(2));
}
5.关闭数据库
依次将ResulrSet,Statemet,PreparedStatement,Connection对象关闭所占的资源。
rs.close();
stmt.close();
pstmt.close();
con.close();
二:JDBC事务
首先,说说什么事务。我认为事务,就是一组操作数据库的动作集合。
事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操 作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示 当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持 久性表示当系统或介质发生故障时,确保已提交事务的更新不能丢失。持久性通过数据库备份和恢复来保证。
jdbc事务是用Connection对象控制的,JDBC Connection接口(java.sql.Connection)提供了两种事务模式,手动提交和自动提交:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。