zoukankan      html  css  js  c++  java
  • java基础之JDBC一:概述及步骤详解

    1. JDBC的简介
        概述: 就是Java用来操作不同数据库(DBMS)的类库(技术), 本质就是一些类和接口.
            /*
                类: DriverManager
                接口: Driver, Connection, Statement, PreparedStatement, ResultSet
            */
            
            //Java Data Base  Connectivity, Java数据库连接(技术).
            
            /*
                集合: 就是Java用来存储不同类型数据的容器, 本质就是一些类和接口.
                    接口: Collection, Set, List, Map
                    类: ArrayList, HashSet, HashMap
                
                IO流: 就是Java用来传输数据的技术, 本质就是一些类和接口.
                    抽象类:    InputStream, OutputStream, Reader, Writer
                    
                    实现类: FileInputStream, BufferedInputStream, FileReader, BufferedReader
                    
                总结: 集合的顶层都是接口, IO流的顶层都是抽象类.
            */
        
        核心功能:
            A: 连接数据库.
            B: 向数据库发送SQL语句.
            C: 操作数据库返回的 结果集.
                如果操作的是更新语句(增删改),  返回的结果集是: int 类型
                如果操作的是查询语句,  返回的结果集是: ResultSet 类型
                
        
    2. 什么是驱动?
        就是设备间进行通信的桥梁.
        
        
    3. JDBC的原理是什么:
        我们知道JDBC是用来操作不同数据库的, 但是操作不同的数据库需要使用不同的驱动.例如: 我们想操作MySQL数据库, 就需要安装MySQL的驱动, 我们想操作Oracle数据库, 就需要安装Oracle数据库的驱动, 如果我们操作SQLServer数据库,
        就需要安装SQLServer数据库的驱动, 这样做是比较麻烦的. 因为Java已经提供了大量的类和接口了, 但是要要求额外记忆一些
        其他的类和接口, 这样就增加了程序员的学习难度. 
        后来Sun公司发现了这个问题, 就和各大数据库生产商协商决定, 由Sun公司提供统一的规范(就是一些类和接口), 数据库生产商提供具体的实现. Sun公司提供的这些类和接口就是: JDBC.
        
    4. JDBC的操作步骤
         1) 导入驱动. 2) 注册驱动. 3) 获取连接对象. 4) 根据连接对象, 获取可以操作SQL语句的对象. 5) 执行SQL语句, 获取结果集. 如果操作的是更新语句(增删改), 返回的结果集是: int 类型 如果操作的是查询语句, 返回的结果集是: ResultSet 类型 6) 操作结果集. 7) 释放资源. 5. JDBC的API详解之: DriverManager(类) 作用: 主要用于驱动管理及获取连接对象的. 作用一: 注册驱动. //MySQL/Oracle/SqlServer的驱动 public static void registerDriver(Driver driver); //注册驱动的意思, 形参是谁的驱动, 就注册谁. //Driver类就是MySQL数据库提供的 驱动类 public class com.mysql.jdbc.Driver implements java.sql.Driver{ } //我们不用上述的方式注册驱动, 因为上述注册驱动的方式会导致驱动程序注册两次. //所以: 我们通过反射的方式加载 com.mysql.jdbc.Driver类的字节码文件, 从而来自动 注册驱动. Class.forName("com.mysql.jdbc.Driver"); //驱动类的全路径 作用二: 获取连接对象. public static Connection getConnection(String url, String username, String password); //获取连接对象. /* url: 数据库连接字符串. 格式: 连接方式:要操作的DBMS://要操作的数据库的IP地址或者主机名:端口号/要操作的具体的数据库 协议:子协议:要操作的DBMS://要操作的数据库的IP地址或者主机名:端口号/要操作的具体的数据库 例如: jdbc:mysql://127.0.0.1:3306/tempDb jdbc:mysql://localhost:3306/tempDb 如果操作的是本地数据库(DBMS), 上述的写法可以优化为: jdbc:mysql:///tempDb username: 要操作的数据库(DBMS)的账号 password: 要操作的数据库(DBMS)的密码 */ 6. JDBC的API详解之: Connection(接口) Connection: 连接对象 作用一: 获取可以执行SQL语句的对象. public Statement createStatement(); //获取可以执行SQL语句的对象. public PreparedStatement prepareStatement(String sql); //获取可以执行SQL语句的对象, 具有预编译功能, 可以解决SQL注入攻击问题. 作用二: 可以进行事务管理. public void setAutoCommit(boolean flag); //设置是否开启事务的自动提交功能, 相当于我们昨天讲解的: 开启事务. public void commit(); //提交事务 public void rollback(); //事务回滚 public void setTransactionIsolation(int level); //设置事务的隔离级别 Connection接口中的常量: public static final int TRANSACTION_NONE = 0; public static final int TRANSACTION_READ_UNCOMMITTED = 1; public static final int TRANSACTION_READ_COMMITTED = 2; public static final int TRANSACTION_REPEATABLE_READ = 4; public static final int TRANSACTION_SERIALIZABLE = 8; 7. JDBC的API详解之: Statement(接口) Statement: 可以操作SQL语句的对象. 作用一: 执行SQL语句. public ResultSet executeQuery(String sql); //执行查询语句 public int executeUpdate(String sql); //执行更新语句 作用二: 可以执行批处理. //批处理只针对更新语句有效. public void addBatch(String sql); //把SQL语句添加到批处理(指令)中. public int[] executeBatch(); //执行批处理(指令) public void clearBatch(); //清除批出(指令) 8. JDBC的API详解之: ResultSet(接口) ResultSet: 执行查询语句后的结果集对象. public boolean next(); //判断结果集中是否还有数据. 类似于Iterator#hasNext(). public XXX getXxx(int columnIndex); //根据列的编号, 获取该列的信息, Xxx是数据类型的意思 public XXX getXxx(String columnName); //根据列的名字, 获取该列的信息, Xxx是数据类型的意思, 建议用这种方式. //getInt(), getString(), getObject();
    Properties集合类:
        概述:  它是一个双列集合, 键值都是String类型, 它是Hashtable集合的子类.
                //记忆: Properties集合是唯一可以直接和IO流相结合使用的集合类.
                //它可以直接从流中读取数据, 也可以直接写数据到流中.
                
        成员方法:
            public void load(InputStream is);            //从流中读取数据
            public void load(Reader r);                    //从流中读取数据
            
            public void store(OutputStream os);            //写数据到流中
            public void store(Writer w);                //写数据到流中
            
            public String getProperty(String key);            //根据键获取值
            public void setProperty(String key,String value);    //设置键值对
  • 相关阅读:
    模块三
    python的6种基本数据类型--字典
    python的6种基本数据类型--集合
    数据集之集合
    锚点使用
    JSON返回DateTime/Date('123123123')/解决办法
    JSON返回DateTime/Date('123123123')/解决办法
    设计模式-系列索引
    设计模式-系列索引
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9168658.html
Copyright © 2011-2022 走看看