JDBC目录
JDBC
JDBC,Java DataBase Connectivity,全称数据库连接。是java用于连接数据库的标准API,为个习性数据库提供了一个同一的接口,然后不同的数据库公司实现该接口
数据库连接步骤
- 加载数据库驱动程序
- 建立连接对象
- 创建sql语句
- 执行sql语句并获得结果
- 关闭连接对象,释放资源。
public JDBCDemo{
public static void main(String[] args){
//1. 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获得Connection连接对象
Connection connection=DriverManager.getConnection("jdbc:mysql:///test01","root","root");
//3.创建sql语句
String sql="select * from perple";
//4.执行sql语句并处理结果
//获得sql语句对象
Statement statement=connection.createStatement();
//执行sql语句并拿到结果集
ResultSet res= statement.executeQuery(sql);
//处理结果集
while(res.next()){
System.out.println(res.getString("name"));
}
//5.关闭连接对象,释放资源
res.close();
statement.close();
connection.close();
}
}
JDBC类详解
DriverManager
是jdbc的管理层,管理一组jdbc驱动程序的基本服务。
建立数据库连接的方法是调用DriverManager的静态方法getConnection()。
public static Connection getConnection(String dburl)
public static Connection getConnection(String dburl,String user,String password)
dburl表示jdbc的url,user表示数据库用户名,password表示密码。
Connection
该类代表了与数据可的连接,是数据库编程最重要的一个对象。
常用的方法:
Statement createStatement():创建一个Statement对象。
PreparedStatemend prepareStatement(String sql):使用给定sql语句,创建一个预编译语句对象。
void setAutoCommit(boolean b):通过该连接对象对数据库的更新是否自动提交,默认为true。
boolean getAutoCommit():返回当前连接是否是自动提交模式。
void commit():手动对数据进行更新操作。
void roolback():对数据库的操作进行回滚。
语句对象
Statement
Statement:用于执行sql语句。
ResultSet executeQuery(String sql):执行sql语句并反正结果集对象
int executeUpdate(String sql):执行sql语句,返回更新行数
Connection getConnection():返回产生该对象的连接对象
void close():释放Statement占用的数据库和jdbc资源。
PreparedStatement
继承于Statement。
Statement和PreparedStatement比较
- PreparedStatement可以避免SQL注入问题。
- PreparedStatement是预编译的,SQL语句被预编译该对象中,频繁的查询数据库效率更高。
ResultSet
表示sql查询语句得到的记录集合。每个结果集都有一个游标,新产生的ResultSet对象,游标都指向第一条记录的前面。
boolean next():如果下面还有记录,返回true,游标下移一行;如果没有记录就返回false。
String getString(int colunmIndex):返回指定列的值。从1开始。
String getString(String columnName):返回指定列名的值。
int getRow():返回游标当前行号。
MySql数据库类型于Java类型的转换
JDBC事务
指一个操作由具体的几个步骤实现。由Connection对象控制,如果这个操作被事务管理,则这几个具体步骤要么都成功,要么都失败。
Connection对象控制方法:
setAutoCommit(booelan b):为false,则关闭自动事务,改为手动。
commit():提交事务。
rollback():回滚事务。
数据库连接池
*为何需要连接池:*当需要频繁的查找数据库的时候,就要不停的创建连接对象,但是短暂的使用之后又关闭释放资源,然后再创建……由于创建对象会浪费大量资源,因此用到了数据库连接池。
数据库连接池就是一个存放连接对象的容器,当需要查询数据库时,便从数据库中拿出一个连接对象使用,使用完毕之后再将容器归还刚在池。
常用的数据库连接池:C3p0,Druid等。
标准接口:DataSource。 javax.sql包下的。
获取连接:getConnection()
归还连接:Connection.close()。如果连接对象是从连接池中获取的,拿close()方法不会关闭连接,而是归还连接到连接池。