案例使用mysql8.0版本数据库
操作代码前请先创建jdbc.properties配置文件于src目录下,jdbc.properties内容参考:
jdbc.properties:
// 输入自己的数据库连接信息,以mysql为例,默认3306端口
//数据库较低版本:driver=com.mysql.jdbc.Driver
//数据库较高版本:driver=com.mysql.cj.jdbc.Driver,我这里使用的是mysql8.0版本
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/database_name
user=your_userName
password=your_userPwd
SML语句实现代码块:
// SML语句实现代码块:
package com.mysql.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
/**开发中不建议把连接数据库的信息写死到java程序中,需要修改信息直接在properties中修改,不需要重新编译*/
public class JDBCTest04 {
/**
* 1.注册驱动
* 2.获取连接
* 3.获取数据库操作对象
* 4.执行sql
* 5.(处理查询结果)
* 6.释放资源
* */
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
//使用资源绑定器绑定属性
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("driver");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
try{
//注册驱动的第二种方式,由于参数是字符串,可以写入xml文件中,此种方式常用
Class.forName(driver);
//获取连接
connection = DriverManager.getConnection(url,user,password);
//获取数据库操作对象
statement = connection.createStatement();
//执行sql
int count = statement.executeUpdate("delete from dept where dname = 'PowerBy'");
System.out.println(count == 1 ? "删除成功":"删除失败");
}
catch (SQLException | ClassNotFoundException e){
e.printStackTrace();
}
finally {
//释放资源
if(statement != null){
try{
statement.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
if (connection != null){
try{
connection.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
SQL语句实现代码块:
package com.mysql.jdbc;
import java.sql.*;
import java.util.ResourceBundle;
/**
* 处理查询结果集(返回select语句执行结果)
* 实际开发中不建议把连接数据库的信息写死到java程序中,需要修改信息直接再properties中袖中,不需要重新编译
* */
public class JDBCTest06 {
/**
* 1.注册驱动
* 2.获取连接
* 3.获取数据库操作对象
* 4.执行sql
* 5.(处理查询结果)
* 6.释放资源
*/
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String driver = bundle.getString("driver");
String url = bundle.getString("url");
String user = bundle.getString("user");
String password = bundle.getString("password");
try{
//1.注册驱动
Class.forName(driver);
//2.获取连接
connection = DriverManager.getConnection(url,user,password);
//3.获取数据库操作对象
statement = connection.createStatement();
//4.执行sql
resultSet = statement.executeQuery("select ename,job,sal from emp");
//5.处理查询结果集
while(resultSet.next()){
System.out.println("ENAME:"+resultSet.getString("ename")+
" JOB:"+resultSet.getString("job")+
" SAL:"+resultSet.getDouble("sal"));
}
}
catch (Exception e){
e.printStackTrace();
}
finally {
try{
resultSet.close();
}
catch (Exception e){
e.printStackTrace();
}
try{
statement.close();
}
catch (Exception e){
e.printStackTrace();
}
try{
connection.close();
}
catch (Exception e){
e.printStackTrace();
}
}
}
}
总结:
1.注意jdbc.properties配置文件书写正确,并且在java代码中ResourceBundle.getString()方法中参数与配置文件所填参数一致
2.注册驱动使用代理Class.forName(driver)方法进行实现,DriverManager.registerDriver()方法在driver的静态变量中申明,运行driver类自动调用DriverManager.registerDriver();
3.数据库使用完毕需要释放资源,释放资源顺序按照ResultSet()对象——Statement()对象——Connection()对象顺序进行