jdbc
1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
2. 获取连接
Connection conn = DriverManager.getConnection(url, username, password);
3. 定义SQL语句
String sql = “update…” ;
4. 获取执行SQL对象
Statement stmt = conn.createStatement();
5. 执行SQL
stmt.executeUpdate(sql);
6. 处理返回结果
7. 释放资源
DriverManager(驱动管理类)作用:
注册驱动
获取数据库连接
1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
查看 Driver 类源码
2. 获取连接
参数
1. url:连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…
示例:jdbc:mysql://127.0.0.1:3306/db1
细节:
如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
2. user:用户名
3. password:密码
Connection(数据库连接对象)作用:
获取执行 SQL 的对象
管理事务
获取执行 SQL 的对象
普通执行SQL对象
Statement createStatement()
预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement (sql)
执行存储过程的对象
CallableStatement prepareCall (sql)
MySQL 事务管理
开启事务:BEGIN; / START TRANSACTION;
提交事务:COMMIT;
回滚事务:ROLLBACK;
MySQL默认自动提交事务
JDBC 事务管理:Connection接口中定义了3个对应的方法
开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback()
Statement作用:
执行SQL语句
int executeUpdate(sql):执行DML、DDL语句
返回值:(1) DML语句影响的行数 (2) DDL语句执行后,执行成功也可能返回 0
ResultSet executeQuery(sql):执行DQL 语句
返回值: ResultSet 结果集对象
ResultSet(结果集对象)作用:
封装了DQL查询语句的结果
ResultSet stmt.executeQuery(sql):执行DQL 语句,返回 ResultSet 对象
获取查询结果
boolean next():(1) 将光标从当前位置向前移动一行 (2)判断当前行是否为有效行
返回值:
true:有效行,当前行有数据
false:无效行,当前行没有数据
xxx getXxx(参数):获取数据
xxx:数据类型;如:int getInt(参数) ; String getString(参数)
参数:
int:列的编号,从1开始
String:列的名称
ResultSet
使用步骤:
游标向下移动一行,并判断该行否有数据:next()
获取数据:getXxx(参数)
//循环判断游标是否是最后一行末尾
while(rs.next()){
//获取数据
rs.getXxx(参数);
}
PreparedStatement
PreparedStatement作用:
预编译SQL语句并执行:预防SQL注入问题
SQL注入
SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
获取 PreparedStatement 对象
// SQL语句中的参数值,使用?占位符替代String sql = "select * from user where username = ? and password = ?";
// 通过Connection对象获取,并传入对应的sql语句PreparedStatement pstmt = conn.prepareStatement(sql);
设置参数值
PreparedStatement对象:setXxx(参数1,参数2):给 ? 赋值
Xxx:数据类型 ; 如 setInt (参数1,参数2)
参数:
参数1: ?的位置编号,从1 开始
参数2: ?的值
执行SQL
executeUpdate(); / executeQuery(); :不需要再传递sql
标签:语句,jdbc,SQL,参数,sql,执行 From: https://www.cnblogs.com/popopopopo/p/16940711.html