JDBC的操作步骤:
1)注册驱动
java.sql.DriverManager:驱动管理类(管理一组JDBC服务的)
注册驱动的方法:
public static void registerDriver(Driver driver):
形参传递 是接口,需要改接口的子实现类对象
提供的驱动Jar包:com.mysql.jdbc.Driver implements java.sql.Driver接口
正常的格式: (弊端:相当于注册了两次)
Driver driver = new com.mysql.jdbc.Driver() ;
// DriverManager.registerDriver(driver);
底层源码:
包名:com.mysql.jdbc
public class Driver implements java.sql.Driver {
静态代码块:加载该Driver类的同时,跟静态相关的代码先执行!
static {
try {
//使用驱动管理了注册该驱动
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
}
优化之后:使用了反射的思想:只需要加载com.mysql.jdbc.Driver该类即可!
Class.forName("com.mysql.jdbc.Driver") ;//保证版本的向下兼容,建议永远给出这句话!
2)通过驱动管理DriverManager获取数据库的连接对象:Connection(java.sql)
驱动管理类的DriverManger :管理一组JDBC服务的
public static Connection getConnection(
String url,String user,String password):获取连接
url:统一资源定位符:就是uri的一个子集
使用url:
jdbc:mysql://域名:端口号/数据库名(该库一定要存在!)
协议很多:
ftp://
http:// 域名:端口号/访问的具体请求地址
mail:邮件协议
thunder://迅雷协...
file://本地文件协议
...
uri:网络资源一种统称!
http://localhost:8080/login :URL
/login: uri
user:用户名:连接数据库的用户名称 :root
password:连接数据库的使用的密码
3)Connection:连接对象 java.sql.Connection
表示与数据库的会话(连接),可以获取当前链接数据库的元数据信息(表的结构/表的字段类型..)
成员方法:
Statement createStatement():创建Statement执行对象
并且将指定的sql发送到指定数据库中
PreparedStatement prepareStatement(String sql):将参数sql语句进行执行
发送到数据库中,并且获取预编译对象
DatabaseMetaData getMetaData():获取该数据库相关的元数据信息
包含了一些数据库以及表的结构....
4)Statement:java.sql.Statement
执行对象
执行静态的sql语句
举例:
"update account set balance = balance + 500 where id = 1;
id的值,给balance+500的值,(硬编码)
成员方法:
int executeUpdate(String sql):通用方法
针对DML语句:insert,update,delete,有返回结果的
可以执行最基本DDL语句,没有返回内容的!
ResultSet executeQuery(String sql):专门执行DQL语句:select..
返回的结果:结果集对象(数据库结果集的数据表)
5)PreparedStatement 执行对象(预编译对象) extends Statement
预编译的 SQL 语句的对象。
给参数化的sql进行赋值
sql:
insert into 表名 (name,age,gender) values(?,?,?) ; 占位符号
publi void setXXX(第几个参数,实际值) ;
ResultSet executeQuery():执行DQL语句
int executeUpdate():执行DML语句会返回结果:影响了行数
指定DDL语句,返回结果是0
6)ResultSet:查询后生成的结果集的数据表 (java.sql.xx)