一、第一个JDBC程序
1、创建数据库并导入测试数据
2、创建一个IDEA项目
3、导入数据库驱动
1)在项目下新建一个目录,命名为lib2)Ctrl+C Ctrl+V把jar包粘到lib目录下。
3)右键lib→Add as Library(添加到库)→确定
4、编写代码
import java.sql.*;
public class Jdbc {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、设置用户连接信息
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
String username = "root";
String password = "123456";
//3、连接
Connection connection = DriverManager.getConnection(url, username, password);
//4、执行SQL对象
Statement statement = connection.createStatement();
String sql = "SELECT * FROM users";
ResultSet resultSet = statement.executeQuery(sql);
//5、执行SQL的对象,去执行SQL语句
while(resultSet.next()){
System.out.println("id="+resultSet.getObject("id"));
System.out.println("username="+resultSet.getObject("name"));
System.out.println("password="+resultSet.getObject("password"));
}
//6、释放连接
resultSet.close();
statement.close();
connection.close();
}
}
5、步骤总结
1)加载驱动
2)连接数据库 DriverManager
3)获取执行的sql对象 Statement
4)获得返回的结果集
5)释放资源
二、JDBC中对象解释
1、DriverManager
1)加载驱动
A. DriverManager.registerDriver(new com.mysql.jdbc.Driver());
(不推荐)
B、Class.forName("com.mysql.jdbc.Driver");
(推荐写法)
2)获取数据库驱动的对象
Connection connection = DriverManager.getConnection(url, username, password);
connection
代表数据库的对象,主要方法如下:
①数据库设置自动提交connection.setAutoCommit();
②事务提交connection.commit();
③事务回滚connection.rollback();
2、URL
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
①固定格式
协议//主机地址:端口号/数据库名?参数1&参数2&参数3
【补充】mysql默认端口号3306,Oracle 默认端口号1521
URL书写格式为//jdbc:oracle:thin@localhost:1521:sid
参数1:useUnicode
使用中文编码
参数2:characterEncoding
字符集编码
参数3:useSSL
设置安全连接
3、Statement
执行SQL的对象,部分方法说明如下:
其中删除和插入均为更新
①statement.executeQuery();
②statement.execute();
③statement.executeUpdate();
4、ResultSet
查询的结果集,封装了所有的查询结果
1)获得指定的数据类型
① resultSet.getObject();
在不知道列类型的情况下使用,如果知道就用指定类型
②resultSet.getString();
③ resultSet.getInt();
④ resultSet.getFloat();
⑤resultSet.getDate();
2)遍历
①resultSet.beforeFirst();
//移动到最前面
②resultSet.afterLast();
//移动到最后面
③resultSet.next();
//移动到下一个数据
④resultSet.previous();
//移动到前一行
⑤resultSet.absolute(row);
//移动到指定行
5、释放连接
倒着释放,先创建的后释放
①resultSet.close();
②statement.close();
③connection.close();
三、Statement对象详解
1、用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
executeQuery() 向数据库发送查询语句(查)
executeUpdate() 返回代表查询结果的ResultSet对象(增删改)
四、SQL注入
Sql存在漏洞,会被攻击导致数据泄露
五、PreparedStatement对象
PreparedStatement可以防止SQL注入,效率更高!