DriverManager 驱动管理类
1. 注册驱动
• Class.forName("com.mysql.jdbc.Driver");
• Driver会在加载时调用注册。源码如下:

• 提示:MySQL5之后的驱动包可以省略注册驱动的步骤,会自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类
2. 获取数据库连接
• static Connecion getConnection(String url, String user, String password)
• url:连接路径
♦ 语法:jdbc:mysql://域名/IP地址:端口号/数据库名字?参数键值对1&参数键值对2......
♦ 示例:jdbc:mysql://127.0.0.1:3306/db1?useSSL=false
♦ 细节:如果连接本机,端口是默认端口,可以简写jdbc:mysql:///数据库名字?参数键值对1&参数键值对2......
配置useSSL=false参数,禁用安全连接方式,解决警告提示
• user:用户名
• password:密码
Connection
1. 获取执行SQL对象
• 普通执行SQL对象:Statement createStatement()
• 预编译SQL的执行SQL对象:PreparedStatement prepareStatement(sql)
• 执行存储过程的对象:CallableStatement prepareCall(sql)
2. 管理事务
• MySQL的事务管理:
♦ 开启事务:begin/start transaction;
♦ 提交事务:commit;
♦ 回滚事务:rollback;
• JDBC事务管理:Connection中定义了三个对应的方法
♦ 开启事务:setAutoCommit(boolean autoCommit) true为自动提交,false为手动提交,即开启事务
♦ 提交事务:commit()
♦ 回滚事务:rollback()
Statement:执行SQL语句
1. int executeUpdate(sql):执行DML DDL语句
• DML语句时返回值为影响的行数
• DDL语句执行后,执行成功也可能返回0
2. ResultSet executeQuery(sql):执行DQL语句
• 返回值ResultSet为结果集对象
ResultSet:封闭了DQL查询语句结果
1. 获取查询结果
• boolean Next()
♦ 将光标从当前位置向下移动一行
♦ 判断当前行是否为有效行
♦ 返回值为true:有效行,当前行有数据
♦ 返回值为false:无效行,当前行没有数据
• 数据类型 Get数据类型(参数)
♦ 例:int GetInt(参数) String GetString(参数)
♦ int:列的编号,从1开始
♦ String:列的名字
PreparedStatement:预编译SQL语句并执行,预防SQL注入问题
1. SQL注入:通过操作输入来修改事先定义好的SQL语句,来达到执行代码对服务器进行攻击的方法
2. 获取PreparedStatement对象
• String sql = "select * from user where username = ? and password = ?";
• PreparedStatement pstmt = conn.prepareStatement(sql);
3. 设置参数值
• pstmt.setXxx(参数1, 参数2); 给?赋值
• Xxx:数据类型,例:pstmt.setInt(参数1, 参数2);
• 参数1:?的位置编号,从1开始
• 参数2:?的值
3. 执行SQL
• executeUpdate();/executeQuery(); 不需要再传递sql
4. 好处
• 预编译SQL,性能更高
• 防止SQL注入,会将敏感字符进行转义
5. 预编译默认是关着的
• 开启方式:连接数据库时在后面加参数useServerPrepStmts=true
6. PreparedStatement执行过程
• 获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译
• 执行时不用再进行这些步骤
• 如果sql模板一样,则只需要一次检查编译,可以多次执行
配置MySQL执行日志:在my.ini文件城加入以下语句
log-output=FIFL
general-log=1
general_log_file="D:\mysql.log"
slow-query-log=1
slow_query_log_file="D:\mysql_slow.log"
long-query-time=2
浙公网安备 33010602011771号