个人笔记-java数据库操作

数据库操作
一、数据库基本知识
  1. 数据库的主要特点

    • 实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享
    • 减少数据的冗余度。同文件系统相比,数据库实现了数据共享从而避免了用户各自建立应用文件,减少了大量的重复数据,减少数据冗余,维护了数据的一致性
    • 数据的独立性。其包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构
    • 数据实现集中控制。文件管理方式中,数据处于一种分散状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据之间的关系。
    • 数据的一致性和可维护性,以确保数据的安全性和可靠性。
      • 安全性控制;以防止数据丢失、错误更新、越权使用
      • 完整性控制:保证数据的正确性、有效性、相容性
      • 并发控制,使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用
      • 故障的发现和恢复
  2. 数据库基本结构

    • 物理数据层:他是数据库的最内层,是物理存储设备上实际存储的数据集合,这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的字符和字组成
    • 概念数据层:他是数据库的中间一层,是数据库整体逻辑表示,指出每个数据的逻辑定义及数据间的逻辑联系,是存储记录的集合;它所涉及的是数据库所有对象的逻辑关系,而不是他们的物理情况,是数据库管理员概念下的数据库
    • 逻辑数据层:它是用户所看到和使用的数据库,是一个或特定用户所使用的数据集合,即逻辑记录的集合
  3. 数据库种类及功能

    • 层次型数据库
    • 网状型数据库
    • 面向对象型数据库
    • 关系型数据库
  4. 数据库语言

    • 数据定义语言(Data Definition Language , DDL)

      create、alter、drop等

    • 数据操纵语言(Data Manipulation Language, DML)

      select、insert、update、delete等

    • 数据控制语言(Data Control Language, DCL)

      grant、revoke等

    • 事务控制语言(Transaction Control Language)

      commit、rollback等

    • SELECT语句

      select 所要查询的字段列表 from 表名

      where 条件表达式 group by 字段名 having 条件表达式(指定分组的条件)

      order by 字段名{ASC|DESC}

      • 将tb_temp表中所有女员工的姓名、年龄按年龄升序的形式查询出来

        select name,age from tb_temp where sex=“女” order by age{ASC};

    • INSERT语句

      insert into 表名[(字段1,字段2,······)] values(属性值1,属性值2,······)

      • 向tb_temp表中插入数据

        insert into tb_temp values(2,“丽丽”,“女”,“销售部”);

    • UPDATE语句

      update 表名 set 字段名 = 新的字段值 where 条件表达式

      • 修改tb_temp中id为2的员工年龄

        update tb_temp set age = 24 where id = 2;

    • DELETE语句

      delete from 表名 where 条件表达式

      • 将tb_temp表中id 为1024的员工删除

        delete from tb_temp where id = 1024;

二、JDBC概述
  1. JDBC-ODBC桥:它是一个驱动程序,完成从JDBC到ODBC操作之间的转换工作,允许JDBC的驱动程序被用作ODBC的驱动程序。

    • 加载JDBC-ODBC桥的驱动程序;建立JDBC-ODBC桥连接器。(不在常用了,现在常用的是JDBC)

      Class.forName("sun.jdbc.odbc.JdbcodbcDriver");
      
    • 使用Connection接口,并通过DriverManager类的静态方法getConnection()创建连接对象。

      Connection conn = DriverManager.getConnection("jdbc:odbc:数据源名字","username","password")//例如
      Connection conn = DriverManager.getConnection("jdbc:odbc:Tom","liu","123456")
    • 向数据库发送SQL语句。使用Statement声明一个SQL语句对象,并通过刚才创建的连接数据库对象conn的createStatement()方法创建这个SQL对象

      Statement sql = conn.createStatement();
      
  2. JDBC技术:是一种底层的API,访问数据库时需要在业务逻辑层嵌入SQL语句;面向关系,依赖关系模型;不能直接访问数据库,必须依赖于JDBC驱动程序。

    • 与数据建立连接
    • 向数据库发送SQL语句
    • 处理数据库返回的结果
  3. JDBC驱动程序类型

    • 总体结构:应用程序、驱动程序管理器、驱动程序、数据源

    • 驱动程序:

      • JDBC-ODBC桥:依靠ODBC驱动器和数据库通信。这种连接方式必须将ODBC二进制代码加载到使用该驱动程序的每台客户机上。(企业、三层结构的服务器代码)

      • 本地API一部分用java编写的驱动程序:把客户机的API上的jdbc调用转换为Oracle、DB2、Sybase、或其他DBMS的调用。

        也需要将二进制代码加载到使用该驱动程序的每台客户机上

      • JDBC网络驱动:将JDBC转换为与DBMS无关的网络协议,又被某一个服务器转换为DBMS协议,是一种利用java编写的驱动程序,也是最为灵活的JDBC驱动程序

      • 本地协议驱动:纯java的驱动程序。将JDBC调用直接转换为DBMS所使用的网络协议,允许从客户机上直接调用DBMS服务器。

三、JDBC常用类和接口
  1. Connection接口:代表与特定数据库的连接,在连接上下文中执行SQL语句并返回结果
    在这里插入图片描述

  2. Statement接口:用于在已经建立连接的基础上向数据库发送SQL语句
    在这里插入图片描述

  3. PreparedStatement接口:用来动态的执行SQL语句
    在这里插入图片描述

  4. DriverManager类:用来管理数据库中所有的驱动程序
    在这里插入图片描述

  5. ResultSet接口:类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集
    在这里插入图片描述
    在这里插入图片描述

四、数据库操作步骤
  1. 连接数据库

    Connection con;			//声明接口对象
    Class.forNme("net.sourceforge.jtds.jdbc.Driver");		//加载数据库驱动类
    //通过访问数据库的URL获取数据库连接对象
    con = DriverManager.getConnection("jdbc:jtds:"+"sqlserver://localhost:1433/db_jdbc","sa","123456");
    
    Conn c = new Conn();    //实例化本类对象
    c.getConnection();		//调用连接数据库的方法
    
  2. 向数据库发送SQL语句

    try{
        Statement sql = con.createStatement();    //创建Statement类对象
    }catch(SQLException e){
        e.printStackTrace();
    }
    
  3. 处理查询结果集

    ResultSet res = sql.executeQuery("select * from tb_temp");
    
  4. 顺序查询

    res = sql.executeQuery("select * from tb_temp");
    while(res.next()){      //顺序查询,如果当前语句不是最后一条,则进入循环
        //··········
    }
    
  5. 模糊查询

    res = sql.executeQuery("select * from tb_temp where"+"name like '张%");   //将姓张的人信息查询出来
    
  6. 预处理语句

    //查询编号为19的人的信息
    sql = con.prepareStatement("select * from tb_temp"+"where id = ?"); //实例化预处理对象 ,?表示通配符
    sql.setInt(1,19);  		//设置参数,1表示从左向右第几个通配符,19表示通配符的值为19(举一反三)
    res = sql.executeQuery();  		//执行预处理语句
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值