一、jdbc使用preparedStatement执行dql(查询)语句示例
package edu.aeon.jdbc.crud; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import edu.aeon.aeonutils.AeonJdbcUtils; /** * [说明]:使用jdbc进行数据操作 * @author aeon */ public class JDBC_insert { /** * 使用jdbc进行增加操作(DML) */ public static void jdbc_insert(){ Connection connection=null; PreparedStatement preparedStatement = null; try { connection = AeonJdbcUtils.getMySqlConnection(); String sql="insert into user(userid,username,userpw) values (?,?,?)"; //将sql语句进行预编译然后保存到preparedStatement对象中 preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, 10006); preparedStatement.setString(2, "aeon"); preparedStatement.setString(3, "aeon"); int rowCount = preparedStatement.executeUpdate(); System.out.println(rowCount+"条数据被插入!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally { AeonJdbcUtils.closeDB(null, preparedStatement, connection); } } /** * 查询操作(DQL) * @param args */ public static void jdbc_select(){ Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection=AeonJdbcUtils.getMySqlConnection(); String sql="select userid,username,userpw from user where userid > ?"; preparedStatement=connection.prepareStatement(sql); preparedStatement.setInt(1, 10002); resultSet = preparedStatement.executeQuery(); System.out.println("用户id\t用户名\t用户密码"); while(resultSet.next()){ int userid=resultSet.getInt("userid"); String username=resultSet.getString("username"); String userpw=resultSet.getString("userpw"); System.out.println(userid+"\t"+username+"\t"+userpw); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ AeonJdbcUtils.closeDB(resultSet, preparedStatement, connection); } } public static void main(String[] args) { //jdbc_insert(); jdbc_select(); } }
数据库截图:
执行结果截图:
必须使用主键作为查询条件,启动的才是行级锁,否则依旧是表级锁,启动行级锁的目的是只有当前事务可以修改主键为x的某一条或几条记录,然后是结束事务,释放行级锁。
如何在JDBC中使用行级锁,其步骤如下:
1.关闭自动提交
2.通过执行语句select * from table_name where id in(x,y) for update;引起事务,启动行级锁,锁住x,y这两条记录
3.启动行级锁的目的就是只有当前事务才能修改x,y这两条记录。
4.结束事务,释放行级锁。