JDBC的使用

来源:互联网 发布:edc刀具知乎 编辑:程序博客网 时间:2024/06/03 21:23
JDBC:Java数据库连接,提供了一种与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作。


一段JDBC访问数据库的代码:

package com.gc.acion;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;/** * 一段经典的JDBC访问Oracle数据库的代码 * @author wangyj13357 */public class SimpleJDBC {public static void main(String[] args) throws Exception {//加载数据库驱动Class.forName("oracle.jdbc.driver.OracleDriver");//创建连接对象Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","hr","hr123456");//创建执行对象Statement statement = conn.createStatement();//PreparedStatement ps = conn.prepareStatement("select * from tbstudent");//执行sqlResultSet result = statement.executeQuery("select * from tbstudent");//ResultSet result = ps.executeQuery();//处理数据集while(result.next()){int id = result.getInt("id");String name = result.getString("name");}//释放数据库资源if(result != null){result.close();}if(statement != null){statement.close();}//if(ps != null){//ps.close();//}if(conn != null){conn.close();}}}

以上代码一共涉及到了几个对象:

Connection:数据库连接:可以通过DriverManager得到连接。数据库连接信息有数据库IP,端口,实例,用户名和密码

Statement和PreparedStatement:执行对象

区别:Statement是逐条单独编译单独执行,效率较慢。

PreparedStatement支持预编译,批处理。也是JDBC的存储过程。

ResultSet:数据集,查询数据库得到的结果


一段JDBC修改数据库的例子:

package com.gc.acion;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;/** * 修改数据库的代码 * @author wangyj13357 * */public class UpdateJDBC {Connection conn =null;PreparedStatement ps = null;public void insertData() throws Exception{try {//加载数据库驱动Class.forName("oracle.jdbc.driver.OracleDriver");//需要执行的sqlString sql = "insert into tbstudent values(001,'wangyj')";//初始化连接对象conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "hr", "hr12345");//是否自动提交,开始启动事务conn.setAutoCommit(false);//得到执行对象ps = conn.prepareStatement(sql);//执行sqlps.executeUpdate();//提交事务conn.commit();} catch (Exception e) {// TODO Auto-generated catch block//失败则事务回滚conn.rollback();e.printStackTrace();} finally{//释放数据库资源if(ps!=null){ps.close();}if(conn!=null){conn.close();}}}}



浅要解析DriverManager和DataSource的区别:

DriverManager是直接和数据库地层连接(三个getConnection方法都是含参的,即要将连接的地址,实例,用户名密码写进去)



DataSource是用数据库连接池进行封装好获得连接的,访问量大的项目最好用连接池(可以在xml中配置数据库连接池,这样就不用在程序中指定了)

package javax.sql;import java.sql.Connection;import java.sql.SQLException;import java.sql.Wrapper;import javax.sql.CommonDataSource;public interface DataSource extends CommonDataSource, Wrapper {Connection getConnection() throws SQLException;Connection getConnection(String arg0, String arg1) throws SQLException;}




0 0