IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 什么是JDBCJDBC是干嘛用的? -> 正文阅读

[大数据]什么是JDBCJDBC是干嘛用的?

8.4.8jdbc的基本流程

  • 1,加载驱动(选择数据库) oracle.jdbc.driver.OracleDriver

  • 2,建立连接(与数据库建立连接)

  • 3,准备sql

  • 4,封装处理块

  • 5,发送执行sql,得到结果集

  • 6,处理结果

  • 7,关闭连接

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的基本流程优化

  • 1,异常捕获

  • 2,定义配置文件db.properties实现软编码

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流程封装

  • JDBC流程封装 1.加载驱动 2.获取连接 3.关闭资源

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();
 ? ? ? ? ?  }
 ? ? ?  }
 ?  }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:47:32  更:2021-12-11 15:49:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:41:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码