前言
调用数据库需要下载对应数据库的驱动
建议把参数写到properties中
JDBC编程六大步骤
1.注册驱动(连接对应品牌的数据库)
2.获取连接(表示JVM的进程和数据库进程之间的通道打开,使用完后一定要关闭)
3.获取数据库操作对象(专门执行sql语句的对象)
4.执行sql语句(DQL,DML…)
5.处理查询结果集(只有当第四步执行的是select语句时才有这一步)
6.释放资源(使用完资源之后一定要关闭资源)
1.注册驱动
DriverManager类的registerDriver(Driver driver)注册所需驱动
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
常用方式
Class.forName(“com.mysql.cj.jdbc.Driver”);加载这个类来运行静态代码块实现驱动的注册
常用原因:参数是一个字符串,字符串可以写到properties中
2.获取连接
DriverManager类的getConnection(String url, String root, String password)获取到与数据库连接的Connection类
Connection con = null;
con=DriverManager.getConnection( url, user, password);
3.创建可执行sql语句的对象(Statement对象)
通过连接connection对象的creatStatement()创建可执行sql语句对象
Statement statement = null;
statement=con.createStatement();//创建对象
4.执行sql语句
使用String sql=" …"传递sql语句到数据库并执行返回结果
jdbc中的sql语句不能有分号
statement对象中executeUpdate(sql)专门执行DML语句(insert delete update) 返回值为受影响的数据库中记录条数
插入
insert into …
删除
delete
更新
update
-------
statement对象中executeQuery(sql)专门执行DQL语句(select)返回值为查询结果集
查询
select
5.处理查询结果集
getString()方法的特点是:不管数据库中数据类型是什么,都以String形式返回;下标都是从1开始
6.释放资源
先释放ResultSet再释放statement最后释放connection
7.使用ResourceBundle类调用propreties文件(重点)
使用ResourceBundle类的getBundle(String basename)来实现调用,通过getString(String key)来获取所需数据
8.代码
public void JDBCTest(){
Connection con = null;
Statement statement = null;
ResultSet set = null;
try {
//获取属性值
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("Driver_Name");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
//1.注册驱动(反射)
Class.forName(driver);
//2.获取连接
con = DriverManager.getConnection(url, user, password);
//3.创建可执行sql语句对象(statement)
statement = con.createStatement();
//4.执行sql语句
String sql = "select * from s";
set = statement.executeQuery(sql);
//5.处理查询结果集
while(set.next()){
System.out.println(set.getString(1)+"|"+set.getString(2)+"|"+set.getString(3)+"|"+set.getString(4));
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}finally {//6.关闭资源(先关statement再关connection)
if(set!=null){
try {
set.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}