JDBC简介:
JDBC全称为:Java DataBase Connectivity(java数据库连接)。
SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。
组成JDBC的2个包:
链接:https://pan.baidu.com/s/1ePw4wDxcsZu9x-3MZHu8FQ
提取码:0g1z
java.sql
javax.sql
开发JDBC应用需要以上2个包的支持外
还需要导入相应JDBC的数据库实现(即数据库驱动
第一个JDBC程序:
编程从user表中读取数据,并打印在命令行窗口中。
一、搭建实验环境 :
1、在mysql中创建一个库,并创建user表和插入表的数据。
2、新建一个Java工程,并导入数据驱动。
二、编写程序,在程序中加载数据库驱动
DriverManager. registerDriver(Driver driver)
三、建立连接(Connection)
Connection conn = DriverManager.getConnection(url,user,pass);
四、创建用于向数据库发送SQL的Statement对象,并发送sql
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
五、从代表结果集的ResultSet中取出数据,打印到命令行窗口
六、断开与数据库的连接,并释放相关资源
package cn.itcast.jdbctest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
/**
* JDBC的快速入门
* @author Administrator
*
*/
public class JdbcDemo1 {
@Test
public void run2(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 现在这么做
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///day17", "root", "root");
// 编写SQL语句了
String sql = "select * from t_user";
// 创建能执行SQL语句的Statement对象
stmt = conn.createStatement();
// 执行SQL语句
rs = stmt.executeQuery(sql);
// 循环变量rs
while(rs.next()){
// 拿出来
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(id+" "+username+" "+password);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
@Test
public void run1() throws SQLException, ClassNotFoundException{
/**
* 1.完成驱动的注册
* 2.获取链接
* 3.执行SQL语句
* 4.释放资源
*/
// 注册驱动
// DriverManager.registerDriver(new Driver());
// 现在这么做
Class.forName("com.mysql.jdbc.Driver");
// 获取链接
// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day17", "root", "root");
Connection conn = DriverManager.getConnection("jdbc:mysql:///day17", "root", "root");
// 编写SQL语句了
String sql = "select * from t_user";
// 创建能执行SQL语句的Statement对象
Statement stmt = conn.createStatement();
// 执行SQL语句
ResultSet rs = stmt.executeQuery(sql);
// 循环变量rs
while(rs.next()){
// 拿出来
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(id+" "+username+" "+password);
}
rs.close();
stmt.close();
conn.close();
}
}
JDBC编程步骤:
装载驱动程序
建立连接
操作数据
释放资源
程序详解—DriverManager:
DriverManager类的是管理一组 JDBC 驱动程序的基本服务。作用有两个,如下:
注册驱动
•static void registerDriver(Driver driver)方法进行注册驱动
•但是这种方式不是很好,原因如下:
•让应用程序依赖具体的驱动包,如果是切换数据库还需要修改源代码才能完成。
•调用该方法导致驱动被注册两次,通过查看驱动的源代码能发现次问题。
•所以在实际开发中不会这么做?具体做法如下:
•Class.forName("com.mysql.jdbc.Driver");
获取链接对象
数据库URL:
URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:
jdbc: mysql: // localhost:3306/test ? key=value
l常用数据库URL地址的写法:
•Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
•MySql—jdbc:mysql://localhost:3306/sid
Mysql的url地址的简写形式: jdbc:mysql:///sid
常用属性:useUnicode=true&characterEncoding=UTF-8
程序详解—Connection:
Jdbc程序中的Connection,它用于代表数据库的链接,Collection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过connection对象完成的,
有两个作用:
•创建执行SQL语句的对象:
•createStatement():创建向数据库发送sql的statement对象
•prepareStatement(sql) :创建向数据库发送预编译sql的PreparedSatement对象
•prepareCall(sql):创建执行存储过程的CallableStatement对象。
• 管理事物:
•setAutoCommit(boolean autoCommit):设置事务是否自动提交。
•commit() :在链接上提交事务。 ---与事务相关!!
•rollback() :在此链接上回滚事务。
程序详解—Statement -- 一次操作:
Jdbc程序中的Statement对象用于向数据库发送SQL语句, Statement对象常用方法:
•执行SQL语句
•executeQuery(String sql) :用于向数据发送查询语句。
•exec