一.JDBC入门
A.导入jar包
B.注册驱动
Class.forName("com.mysql.jdbc.Driver");
C.获取驱动
String url = "jdbc:mysql://127.0.0.1:3306/ee"; //ee是数据库的名称
Connection conn = DriverManager.getConnection(url, "root", "123");
D.获取操作对象
Statement stat = conn.createStatement();
E.操作SQL
int num = stat.executeUpdate(sql);
F.释放资源
stat.close();
conn.close();
1.1 Statement 操作数据库
其中Statement的方法主要为两种:executeUpdate和executeQuery
需要注意的是:executeQuery的对象ResultSet rs 同样需要释放资源,并且是第一个被释放的对象!
A.更新操作(DML"对表记录的增删改"和DDL"对表和库的增删改")
int num = stat.executeUpdate("SQL语句"); //这里的SQL语句是增删改.返回的是影响几行
B.查询操作(DQL"对表记录的查询操作")
ResultSet resu = stat.executeQuery("SQL查询语句"); //这里的SQL语句是查询语句 DQL
1.2 PrepareStatement 操作数据库
操作数据库的方法除了Statement,还有PrepareStatement,其主要用来解决SQL的注入问题(
在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题
1. 输入用户随便,输入密码:a' or 'a' = 'a
2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a'
)
后期都会使用PreparedStatement来完成增删改查的所有操作
1. 可以防止SQL注入
2. 效率更高
A.获取预置操作
select * from user where username = ? and password = ?;
PreparedStatement ps = Connection.prepareStatement(sql); //通过预置对象,获取连接的操作
B.设置参数
ps.setString(1,"root"); //参数1:第几个问号,参数2:对应预置的值
ps.setString(2,"123");//参数1:第几个问号,参数2:对应预置的值
C.执行SQL语句
ps.executeQuery();
二、JDBC的工具类
2.1 提供快捷的两个部分
A.连接Connection的对象
Connection conn = DriverManager.getConnection(url, username, password); //返回conn
B.释放资源
a.增删改 (释放 Connection 和 Statement)
public static void close(Statement stmt, Connection conn){
JDBCUtils.close(null,stmt,conn)
}
b.查询 (释放 Connection 和 Statement 和 ResultSet)
public static void close(ResultSet rs,Statement stmt, Connection conn){...}
2.2 准备数据
需要注意的是:配置文件需要放在src文件夹下,才可以使用加载器读入到内存!
A.四个配置文件的数据(对应的就是静态成员变量)
配置文件Pro.properties:
url=jdbc:mysql://127.0.0.1:3306/ee
username=root
password=123
driver=com.mysql.jdbc.Driver
静态成员变量:
private static String url;
private static String user;
private static String password;
private static String driver;
B.静态代码块
a.赋值静态成员变量(类的加载器"获取配置文件路径",Properties"通过配置文件路径,获取四个值")
Properties pro = new Properties();
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("pro.properties");
String path = res.getPath();
pro.load(new FileReader(path));
url= pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
b.注册驱动 Class.forName(driver);