8.4.8jdbc的基本流程
public class Class01_JDBC {
? ?public static void main(String[] args) throws ClassNotFoundException, SQLException {
? ? ? ?//1,加载驱动
? ? ? ?Class.forName("oracle.jdbc.driver.OracleDriver");
? ? ? ?//2,建立连接
? ? ? ?Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:XE",
? ? ? ? ? ? ? ?"SCOTT",
? ? ? ? ? ? ? ?"TIGER");
? ? ? ?//3,准备sql
? ? ? ?String sql = "select * from emp";
? ? ? ?//4,封装处理块
? ? ? ?Statement state = conn.createStatement();
? ? ? ?//5,发送执行sql,得到结果集
? ? ? ?ResultSet result = state.executeQuery(sql);
? ? ? ?//6,处理结果
? ? ? ?while (result.next()){
? ? ? ? ? ?int empno = result.getInt(1);
? ? ? ? ? ?String ename = result.getString(2);
? ? ? ? ? ?String job = result.getString(3);
? ? ? ? ? ?int mgr = result.getInt(4);
? ? ? ? ? ?//String hiredate = result.getString(5);
? ? ? ? ? ?double sal = result.getDouble(6);
? ? ? ? ? ?double comm = result.getDouble(7);
? ? ? ? ? ?String deptno = result.getString(8);
? ? ? ? ? ?System.out.println(empno+"----->"+ename+"----->"+job+"----->"+mgr+"----->"+sal+"----->"+comm+"----->"+deptno);
? ? ? }
? ? ? ?//7,关闭连接
? ? ? ?conn.close();
? }
}
?
8.4.9jdbc的基本流程优化
public class Class01_JDBC2 {
? ?public static void main(String[] args){
? ? ? ?//Properties创建一个对象
? ? ? ?Properties pro = new Properties();
?
? ? ? ?try {
? ? ? ? ? ?pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
? ? ? } catch (IOException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? }
?
?
? ? ? ?// 1.加载驱动 (选择数据库)
? ? ? try {
? ? ? ? ? Class.forName(pro.getProperty("driver"));
? ? ? } catch (ClassNotFoundException e) {
? ? ? ? ? e.printStackTrace();
? ? ? }
? ? ? ?//提前声明
? ? ? ?Connection conn = null;
? ? ? ?Statement state = null;
? ? ? ?ResultSet result = null;
? ? ? ?try {
? ? ? ? ? ?//2.建立连接(与数据库建立连接)
? ? ? ? ? ?conn = DriverManager.getConnection(
? ? ? ? ? ? ? ? ? ?pro.getProperty("url"),
? ? ? ? ? ? ? ? ? ?pro.getProperty("username"),
? ? ? ? ? ? ? ? ? ?pro.getProperty("password")
? ? ? ? ? );
? ? ? ? ? ?//3.准备sql
? ? ? ? ? ?String sql = "select * from dept";
? ? ? ? ? ?//4.封装处理块
? ? ? ? ? ?state = conn.createStatement();
? ? ? ? ? ?//5.发送执行sql,得到结果集
? ? ? ? ? ?result = state.executeQuery(sql);
? ? ? ? ? ?//6.处理结果
? ? ? ? ? ?while(result.next()){
? ? ? ? ? ? ? ?Object deptno = result.getObject(1);
? ? ? ? ? ? ? ?Object dname = result.getObject(2);
? ? ? ? ? ? ? ?Object loc = result.getObject(3);
?
? ? ? ? ? ? ? ?System.out.println(deptno+"---->"+dname+"---->"+loc);
? ? ? ? ? }
? ? ? } catch (SQLException throwables) {
? ? ? ? ? ?throwables.printStackTrace();
? ? ? } finally {
? ? ? ? ? ?//7.关闭连接
? ? ? ? ? ?if (result!=null){
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?result.close();
? ? ? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? ?if (state!=null){
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?state.close();
? ? ? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? ?if (conn!=null){
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?conn.close();
? ? ? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? }
? }
}
?
8.5用户的操作
-
用户的操作: 注册用户 用户登录 1)根据用户名与密码一起查询 2)根据用户名查询,查询到密码与用户输入的密码比较是否相等 -
修改用户数据 注销用户 -
注意: 事务默认提交 -
PreparedStatement 预处理块: 1.预先编译,提高效率 2.防止SQL注入
public class Class01_User {
? ?public static void main(String[] args) {
? ? ? ?System.out.println(login("88","java","lisi")?"成功":"失败");;
? }
?
? ?//用户登录
? ?//预处理块 : sql语句的拼接由处理块实现
? ?public static boolean login(String deptno,String dname,String loc){
? ? ? ?//给类型赋值
? ? ? ?Connection conn = null;
? ? ? ?PreparedStatement state = null;
? ? ? ?ResultSet result = null;
? ? ? ?//false认为失败
? ? ? ?boolean flag = false;
? ? ? ?try {
? ? ? ? ? ?//1.获取连接
? ? ? ? ? ?conn = Class01_JDBCUtils.getConnection();
? ? ? ? ? ?//2.准备sql
? ? ? ? ? ?String sql = "select * from deptno where deptno=? and dnamme =? and loc =?";
? ? ? ? ? ?//3.封装预处理块
? ? ? ? ? ?state = conn.prepareStatement(sql);
?
? ? ? ? ? ?//为sql中的?赋值
? ? ? ? ? ?state.setObject(1,deptno);
? ? ? ? ? ?state.setObject(2,dname);
? ? ? ? ? ?state.setObject(3,loc);
?
? ? ? ? ? ?//4.执行,结果
? ? ? ? ? ?result = state.executeQuery();
? ? ? ? ? ?//5.处理结果
? ? ? ? ? ?if(result.next()){
? ? ? ? ? ? ? ?flag = true;
? ? ? ? ? }
? ? ? }catch (SQLSyntaxErrorException throwables) {
? ? ? ? ? ?System.out.println("遇到sql注入啦");
? ? ? }catch (SQLException throwables) {
? ? ? ? ? ?throwables.printStackTrace();
? ? ? } finally {
? ? ? ? ? ?//6.关闭资源
// ? ? ? ? ? Class01_JDBCUtils.close(conn,state,result);
? ? ? }
? ? ? ?//7.返回值
? ? ? ?return flag;
? }
? ?//静态处理块
? ?/*public static boolean login(String username,String password){
? ? ? ?Connection conn= null;
? ? ? ?Statement state = null;
? ? ? ?ResultSet result = null;
? ? ? ?boolean flag = false;
?
? ? ? ?try {
? ? ? ? ? ?//1.获取连接
? ? ? ? ? ?conn = Class01_JDBCUtils.getConnection();
? ? ? ? ? ?//2.准备sql
? ? ? ? ? ?String sql = "select * from emp where username='"+username+"' and password = "+password;
? ? ? ? ? ?//3.封装处理块
? ? ? ? ? ?state = conn.createStatement();
? ? ? ? ? ?//4.执行,结果
? ? ? ? ? ?result = state.executeQuery(sql);
? ? ? ? ? ?//5.处理结果
? ? ? ? ? ?if(result.next()){
? ? ? ? ? ? ? ?flag = true;
? ? ? ? ? ?}
? ? ? ?} catch (SQLException throwables) {
? ? ? ? ? ?throwables.printStackTrace();
? ? ? ?} finally {
? ? ? ? ? ?//6.关闭资源
? ? ? ? ? ?Class01_JDBCUtils.close(conn,state,result);
? ? ? ?}
? ? ? ?//7.返回值
? ? ? ?return flag;
? ?}
*/
? ?//用户注册
? ?public static boolean reg(String username,String password){
? ? ? ?Connection conn= null;
? ? ? ?Statement state = null;
? ? ? ?int rows = -1; //影响行数
? ? ? ?boolean flag = false;
?
? ? ? ?try {
? ? ? ? ? ?//1.获取连接
? ? ? ? ? ?conn = Class01_JDBCUtils.getConnection();
? ? ? ? ? ?//2.准备sql
? ? ? ? ? ?String sql = "insert into t_user(username,password) values('"+username+"',"+password+")";
? ? ? ? ? ?//3.封装处理块
? ? ? ? ? ?state = conn.createStatement();
? ? ? ? ? ?//4.执行,结果
? ? ? ? ? ?rows = state.executeUpdate(sql);
? ? ? ? ? ?//5.处理结果
? ? ? ? ? ?if(rows>0){
? ? ? ? ? ? ? ?flag = true;
? ? ? ? ? }
? ? ? } catch (SQLException throwables) {
? ? ? ? ? ?throwables.printStackTrace();
? ? ? } finally {
? ? ? ? ? ?//6.关闭资源
? ? ? ? ? ?Class01_JDBCUtils.close(conn,state);
? ? ? }
? ? ? ?//7.返回值
? ? ? ?return flag;
? }
}
?
8.5.1jdbc流程封装
public class Class01_JDBCUtils {
?
? ?private static Properties pro = new Properties();
?
? ?static{
? ? ? ?try {
? ? ? ? ? ?pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
? ? ? } catch (IOException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? }
?
? ? ? ?//加载驱动 (选择数据库)
? ? ? ?try {
? ? ? ? ? ?Class.forName(pro.getProperty("driver"));
? ? ? } catch (ClassNotFoundException e) {
? ? ? ? ? ?e.printStackTrace();
? ? ? }
? }
?
? ?//获取连接
? ?public static Connection getConnection() throws SQLException {
? ? ? ?Connection conn = null;
? ? ? ?conn = DriverManager.getConnection(
? ? ? ? ? ? ? ?pro.getProperty("url"),
? ? ? ? ? ? ? ?pro.getProperty("username"),
? ? ? ? ? ? ? ?pro.getProperty("password")
? ? ? );
? ? ? ?return conn;
? }
?
? ?//关闭资源
? ?public static void close(Connection conn, Statement state){
? ? ? ?close(conn,state,null);
? }
?
? ?public static void close(Connection conn, Statement state, ResultSet result){
? ? ? ?if(result!=null){
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?result.close();
? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? }
? ? ? }
? ? ? ?if(state!=null){
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?state.close();
? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? }
? ? ? }
? ? ? ?if(conn!=null){
? ? ? ? ? ?try {
? ? ? ? ? ? ? ?conn.close();
? ? ? ? ? } catch (SQLException throwables) {
? ? ? ? ? ? ? ?throwables.printStackTrace();
? ? ? ? ? }
? ? ? }
? }
}
|