1 JDBC基础知识
Q1 什么是JDBC技术
Java Database Connectivity :Java访问数据库的解决方案
Q2 JDBC如何实现访问数据库
JDBC定义了一套标准通用接口,由数据库厂商来实现这些接口连接数据库
Q3 JDBC有哪些标准通用接口
DriverManager 驱动管理
Connection/DatabaseMetaData 连接接口
Statement/PreparedStatement/CallableStatement 语句对象接口
ResultSet/ResultSetMetaData 结果集接口
Q4 JDBC标准接口内有些什么
每个接口都定义了一系列的抽象方法,无论连接哪一个数据库,
过程是一样的 这些包含抽象方法的接口都由各个数据库厂商来实现
Q5 什么是数据jar包
不同的数据库厂商编写标准通用接口的实现类,
这一组实现类打包在各自商场的JDBC-jar包中,
也就是jar包内包含的是JDBC标准接口的实现类
Q6 jar包的导入路径
1 web项目 WebRoot/WEB-INF/lib
2 普通项目 IDE[eclipse/myeclipse]
右键- User library - next - import- findYourJar - ok
2 连接数据库的标准流程
1:注册驱动 Class.forName()
2:加载驱动建立数据库连接 DriverManager
3:通过连接创建执行SQL语句的对象 Connection
4:使用语句对象执行SQL Statement
5:若是查询语句,则可以获取结果 ResultSet
6:使用完毕后关闭连接释放资源
3 JDBC连接数据库的完整步骤
1:加载JDBC驱动
连接数据库之前,首先要将想要连接的数据库的驱动加载到JVM中
加载方法:java.lang.Class[static method] forName(String className)
eg:
try{
Class.forName("com.mysql.jdbc.Driver");//mysql Driver
System.out.println("Driver inject success")
}catch(ClassNotFoundException e){
System.out.println("Not found database driver");
e.printStackTrace();
}
加载成功:Driver类的实例注册到DriverMannger类中
2:提供JDBC连接的URL
URL:Uniform Resourcce Locator 统一资源定位符
URL定义了连接数据库时的协议、子协议、数据源标识
书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:桥连接驱动程序 or 数据库管理系统名称
数据源标识:标记找到数据库来源的地址与接口
eg: jdbc:mysql://localhost:33066/databaseName?useUnicode=true&characterEncoding=gbk
[useUnicode=true]表示使用Unicode字符集
[characterEncoding=gbk]字符编码方式 使用gb2312或gbk,必须使用Unicode字符集
3:创建数据库的连接
请求Connection对象:
通过java.sql.DriverManager[static method]
getConnection(String url,String name,String password)
eg:
try{
Connection conn = DriverManager.getConnection(u,n,p)
System.out.println("connection success");
}catch(SQLException se){
System.out.println("connection failed");
se.printStackTrace();
}
4:创建Statement实例
java.sql.Statement
作用:执行SQL语句
种类:
1 执行静态SQL语句 --> Statement实例
2 执行动态SQL语句 --> PreparedStatement实例
3 执行数据库存储过程 --> CallableStatement实例
eg:
Statement st = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);
CallableStatement cs = conn.prepareCall("{CALL demoSp(?,?)");
5:通过Statement执行SQL语句
三种方法:
1 ResultSet executeQuery(String sqlString) 查询数据库SQL语句,返回一个结果集对象
2 int executeUpadate(String sqlString) 执行INSERT UPDATE DELETE DDL语句
3 boolean execute(sqlString) 用于执行返回多个结果集、多个更新计数
eg:
ResultSet rs = st.executQuery("SELECT * FROM ...");
int row = st.executeUpdate("INSERT INTO ...");
boolean flag = st.execute(String sql);
6:处理结果
两种情况:
1 执行更新返回的是本次操作影响到的记录
2 执行查询返回的结果是一个ResultSet对象
eg:
while(rs.next()){
String name = rs.getString("name");
String pass = rs.getString(1);//获取第一列参数,高效
}
7:关闭JDBC对象
关闭顺序和申明顺序相反:
1 关闭结果集 rs
2 关闭声明 st
3 关闭连接 conn
eg:
if(conn!=null){
try{
conn.close();
}catch(SQLException){
e.printStackTrace();
}
}