JDBC

JDBC基本概念

  • 概念:Java Database Connectivity Java数据库连接

  • JDBC本质: 其实是官方(sun公司)定义的一套操作所有关系型数据的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这一套接口(JDBC)编程,真正执行的代码时驱动jar包中的实现类。
    JDBC

快速入门

  1. 导入驱动jar包
    1. 复制相应的jar包到项目的lib目录下;
    2. 右键 -->Add as Library
  2. 注册驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
  3. 获取数据库的连接对象 Connection
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","username","password");
  4. 定义sql
    String sql = "update account set balance = 500 where id = 1";
  5. 获取执行sql语句的对象 Statement
    Statement stmt = conn.createStatement();
  6. 执行sql,接受返回结果
    int count = stmt.executeUpdate(sql);
  7. 处理结果
    System.out.println(count);
  8. 释放资源
    stmt.close();
    conn.close();

对JDBC中各个接口和类详解

  1. DriverManager:驱动管理对象
    • 功能:
      1. 注册驱动:告诉程序用哪一个数据库驱动jar包
        static void registerDriver(Driver driver):注册与给定的驱动程序DiverManager。
        写代码使用:Class.forName(“com.mysql.cj.jdbc.Manager”);是因为原码里面存在静态代码块
        注意: mysql5之后可以省略这一个步骤。

      2. 获取数据库连接

        1. 方法:static Connection getConnection(String url ,String user, String password)
        2. 参数:
          url:指定连接的路径jdbc:mysql://ip地址:端口号/数据库名称(如果是本机的mysql服务器,并且默认端口是3306,则可以简写为:jdbc:mysql:///数据库名)
          user:用户名
          password:密码
  2. Connection:数据库连接对象
    1. 功能:
      1. 获取执行sql的对象
        • Statement createStatement (String sql)
        • PreparedStatement preparedDatatement(String sql)
      2. 管理事物
        • 开启事务:void setAutoCommit(boolean autoConmmit),调用该方法设置参数为false,即开启事物
        • 提交事务:commit()
        • 回滚事务:rollback()
  3. Statement:执行sql的对象
    • boolean execute(String sql): 可以执行任意的sql
    • int executeUpdate(String sql):执行DML(insert、update、delete)语句、DDL(create、alter、drop)语句;
      返回值:影响的行数,可以判断DML是否成功,大于0则成功执行
    • ResultSet executeQuery(String sql):执行DQL语句
  4. ResultSet:结果集对象,封装查询结果
    • next():游标向下移动一行
    • getXXX(参数):获取数据
      • XXX:代表数据类型
      • 参数:
        int:代表列的编号,从1开始,如:getString(1)
        String:代表列名称。如:getDouble(“name”)
      • 注意:
        使用步骤:
        1. 游标向下移动一行
        2. 判断是否有数据
        3. 获取数据
  5. PreparedStatement:执行sql的对象
    1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题。
  6. 解决SQL注入问题:使用PreparedStatement对象
  7. 预编译SQL:参数使用?作为占位符
  8. 步骤:
    1. 导入驱动包
    2. 注册驱动
    3. 获取数据库连接对象
    4. 定义sql
      注意:使用?作为占位符。
    5. 获取执行sql语句的对象 PreparedStatement Connection.preparedStatement(String sql)
    6. 给?赋值
      1. 方法:setXXX(参数1,参数2)
        • 参数1:?的位置编号,从1开始
        • 参数2:?的值
    7. 执行sql,接受返回结果,不需要传递sql语句
    8. 处理结果
    9. 释放资源
抽取JDBC工具类:JDBCUtils
  • 目的:简化书写
  • 分析:
    1. 注册驱动抽取
    2. 抽取一个方法获取连接对象
      • 需求:不想传递参数,还得保证工具类的通透性。
      • 解决:配置文件
        jdbc.properties
        url =
        user =
        password =
    3. 抽取一个方法释放资源
  • 代码实现:
public class JDBCUtils {
       private static String url;
       private static String user;
       private static String password;
       private static String driver;
       /**
        * 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
        */
       static{
           //读取资源文件,获取值。
   
           try {
               //1. 创建Properties集合类。
               Properties pro = new Properties();
   
               //获取src路径下的文件的方式--->ClassLoader 类加载器
               ClassLoader classLoader = JDBCUtils.class.getClassLoader();
               URL res  = classLoader.getResource("jdbc.properties");
               String path = res.getPath();
               System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties
               //2. 加载文件
              // pro.load(new FileReader("D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties"));
               pro.load(new FileReader(path));
   
               //3. 获取数据,赋值
               url = pro.getProperty("url");
               user = pro.getProperty("user");
               password = pro.getProperty("password");
               driver = pro.getProperty("driver");
               //4. 注册驱动
               Class.forName(driver);
           } catch (IOException e) {
               e.printStackTrace();
           } catch (ClassNotFoundException e) {
               e.printStackTrace();
           }
       }
   
   
       /**
        * 获取连接
        * @return 连接对象
        */
       public static Connection getConnection() throws SQLException {
   
           return DriverManager.getConnection(url, user, password);
       }
   
       /**
        * 释放资源
        * @param stmt
        * @param conn
        */
       public static void close(Statement stmt,Connection conn){
           if( stmt != null){
               try {
                   stmt.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
   
           if( conn != null){
               try {
                   conn.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
       }
   
   
       /**
        * 释放资源
        * @param stmt
        * @param conn
        */
       public static void close(ResultSet rs,Statement stmt, Connection conn){
           if( rs != null){
               try {
                   rs.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
   
           if( stmt != null){
               try {
                   stmt.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
   
           if( conn != null){
               try {
                   conn.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
       }
   
   }
JDBC控制事物
  1. 事物:一个包含多个步骤的业务操作。如果这个业务操作被事物管理,则这多个步骤要么同时成功,要么同时失败。
  2. 操作:
    1. 开启事务
    2. 提交事务
    3. 回滚事务
  3. 使用Connection对象来管理事务
    • 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事物
    • 提交事务:commit()
    • 回滚事务:rollback()
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值