• Java的数据库编程:JDBC


    目录

    一、JDBC是什么?

    二、使用步骤

    1.首先将JDBC的包引进java中

     2.创建新的类来写代码

     3.描述你的服务器

    4.设置你的数据库地址,数据库用户名,数据库密码

    5.连接数据库

    6.书写你所要执行的SQL语句

    7.把字符串风格的sql转化成一个对象

    8.执行语句

    9.回收资源

    三.使用JDBC的好处是什么​​​​​​​


    一、JDBC是什么?

     

    JDBC是数据库连接是一种用于执行SQL语句的java API,就类似于一个网址,它是java中的数据库连接规范,这个API里面由java.sql.*,javax.sql.*包中的一些类和接口组成,这些都可以为实现sql做基础,这些都为java开发人员操作数据库提供了一个标准的API,可以为多重关系数据库提供同意的访问
    

    二、使用步骤

    1.首先将JDBC的包引进java中

    *第一步需要创建一个新的java项目,在这个项目里面创建一个新的文件夹

     *第二步将你下载的jar包复制粘贴到这个文件夹里面

      那么应该如何下载这个包:

          可以在maven的官网下载:      Maven Repository: Search/Browse/Explore (mvnrepository.com)

    随便选择一个都可以

     下载好了之后就可以将此压缩包放到新文件夹里面了

     

     

    *最后一步你需要读取一下这个包这也是不可缺少的一步

    这样就将包引进完成了

     2.创建新的类来写代码

     

     3.描述你的服务器

    DataSourse 是一个接口 是JDBC提供的类和方法中的一个 javax.sql这就是JDBC的包
    import javax.sql.DataSource;需要引入这个包
    这样就描述了数据库服务器在哪  DataSource接口通过MysqlDataSource实现具体的方法 向上转型
    DataSource dataSource = new MysqlDataSource();

     

    4.设置你的数据库地址,数据库用户名,数据库密码

    1. ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
    2. ((MysqlDataSource) dataSource).setUser("root");
    3. ((MysqlDataSource) dataSource).setPassword("123456");
    ((MysqlDataSource) dataSource)这是一个向下转型,相关参数的具体类型是DataSource,后面如果数据库进行了改动基本代码不用变属于低耦合的
    "jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false":
    jdbc:mysql 表示这个url是JDBC MySQL的url相当于网址  127.0.0.1 IP地址描述了网络上一个主机的位置 这个IP地址是一个特殊的就相当于this直接访问当前主机的IP地址,java是要访问的数据库 characterEncoding=utf8是字符编码格式,useSSL=false传输过程中是否需要加密 一般没有重要数据的话不需要加密
    设置登录数据库的用户名  mysql的默认用户名是root
    设置登录数据库的密码   密码为自己设置的密码

     

    5.连接数据库

    Connection connection = dataSource.getConnection(); 

    要使用jdbc的connection
    getConnection()这个方法是受查异常需要声明一下

    6.书写你所要执行的SQL语句

    增删改查

    1. //String sql = "insert into student values('小三',20,1234)";//可以这么写但是这样写固定了可以让用户自己输入 这里的语句不需要加;
    2. String sql = "insert into student values(?,?,?)";//这里的?代表不确定
    3. Scanner input = new Scanner(System.in);
    4. System.out.println("请输入要插入的名字");
    5. String name = input.next();
    6. System.out.println("请输入要插入的年龄");
    7. int age = input.nextInt();
    8. System.out.println("请输入要插入的id");
    9. String id = input.next();
    1. String sql = "delete from student where name = ?";
    2. Scanner input = new Scanner(System.in);
    3. System.out.println("请输入你要删除的名字:");
    4. String name = input.next();
    1. Scanner input = new Scanner(System.in);
    2. System.out.println("请输入要修改的名字:");
    3. String name = input.next();
    4. System.out.println("请输入要修改人的id:");
    5. String id = input.next();

    1. //sql语句
    2. String sql = "select * from student";

    7.把字符串风格的sql转化成一个对象

    1. PreparedStatement statement = connection.prepareStatement(sql); //通过connection里面的prepareStatement方法转换为对象
    2. //将用户输入的放到sql语句中去
    3. statement.setString(1,name);//这里的1 2 3 代表?的顺序
    4. statement.setInt(2,age);
    5. statement.setString(3,id);

    其他的都类似,后面如果你发现你的SQL语句执行不了的话你可以通过查看statement,来看你赋值后的sql语句是否正确从而改正错误

    System.out.println("statement:" + statement);

    8.执行语句

    1. int a = statement.executeUpdate();
    2. System.out.println("a=" + a);
    只有select语句需要用到executeQuery
    insert,update,delete语句都会使用executeUpdate,返回值为一个整数表示影响的语句数

    select语句执行需要接收因为返回的是一个完整的表

    ResultSet resultSet= statement.executeQuery();//返回的时候需要按所返回的所有列来接收
    1. while(resultSet.next()){//按表里面有的内容一列一列的输出 这里的while表示行数
    2. String name = resultSet.getString("name");
    3. int age = resultSet.getInt("age");
    4. String id = resultSet.getString("id");
    5. System.out.println("name " + name + " age " + age + " id " + id);
    6. }

    9.回收资源

    最后你需要回收资源此时你需要先释放statement,再释放connection就和你打开冰箱门然后来开抽屉取东西一样,你需要先关上抽屉才能关冰箱门

    如果是选择语句的话你需要多回收一步

    resultSet.close();
    1. statement.close();//先释放转化
    2. connection.close();//在释放连接

     

    这样一个完整的sql语句就执行完毕了

    三.使用JDBC的好处是什么

    1.java语言访问数据库操作完全面向抽象接口编程;
    2.开发数据库用用不用限定在的定的数据库厂商的API;
    3.程序的可移植性大大增加
    

  • 相关阅读:
    【C语言趣味教程】(8) 标准 IO 流:输入和输出 | 标准输入 stdin | 标准输出 stdout | 详解 printf 和 scanf | 探讨 scanf 缓冲区问题和安全性问题
    Golang Gorm 一对多 关联模式 Association + Find 查询关联
    【数据结构】堆的实现&堆排序&Top-K
    【开源】基于SpringBoot的农村物流配送系统的设计和实现
    SpringBoot-黑马程序员-学习笔记(五)
    6.824 lab2
    【全网独家,收藏吧】10年全部《信息资源管理》真题整理,第2章 信息化规划与组织
    一文教你如何设计出优秀的测试用例(文档+视频)
    飞利浦Fidelio B97全景声家庭影院,让你在家享受“暑期档”
    更换内存条需要注意什么
  • 原文地址:https://blog.csdn.net/qq_58266033/article/details/123514969