1. 1. JDBC的简介
  2. 概述: 就是Java用来操作不同数据库(DBMS)的类库(技术), 本质就是一些类和接口.
  3. /*
  4. 类: DriverManager
  5. 接口: Driver, Connection, Statement, PreparedStatement, ResultSet
  6. */
  7.  
  8. //Java Data Base Connectivity, Java数据库连接(技术).
  9.  
  10. /*
  11. 集合: 就是Java用来存储不同类型数据的容器, 本质就是一些类和接口.
  12. 接口: Collection, Set, List, Map
  13. 类: ArrayList, HashSet, HashMap
  14.  
  15. IO流: 就是Java用来传输数据的技术, 本质就是一些类和接口.
  16. 抽象类: InputStream, OutputStream, Reader, Writer
  17.  
  18. 实现类: FileInputStream, BufferedInputStream, FileReader, BufferedReader
  19.  
  20. 总结: 集合的顶层都是接口, IO流的顶层都是抽象类.
  21. */
  22.  
  23. 核心功能:
  24. A: 连接数据库.
  25. B: 向数据库发送SQL语句.
  26. C: 操作数据库返回的 结果集.
  27. 如果操作的是更新语句(增删改), 返回的结果集是: int 类型
  28. 如果操作的是查询语句, 返回的结果集是: ResultSet 类型
  29.  
  30. 2. 什么是驱动?
  31. 就是设备间进行通信的桥梁.
  32.  
  33. 3. JDBC的原理是什么:
  34. 我们知道JDBC是用来操作不同数据库的, 但是操作不同的数据库需要使用不同的驱动.例如: 我们想操作MySQL数据库, 就需要安装MySQL的驱动, 我们想操作Oracle数据库, 就需要安装Oracle数据库的驱动, 如果我们操作SQLServer数据库,
  35. 就需要安装SQLServer数据库的驱动, 这样做是比较麻烦的. 因为Java已经提供了大量的类和接口了, 但是要要求额外记忆一些
  36. 其他的类和接口, 这样就增加了程序员的学习难度.
  37. 后来Sun公司发现了这个问题, 就和各大数据库生产商协商决定, Sun公司提供统一的规范(就是一些类和接口), 数据库生产商提供具体的实现. Sun公司提供的这些类和接口就是: JDBC.
  38.  
  39. 4. JDBC的操作步骤
         1) 导入驱动.
  40. 2) 注册驱动.
  41. 3) 获取连接对象.
  42. 4) 根据连接对象, 获取可以操作SQL语句的对象.
  43. 5) 执行SQL语句, 获取结果集.
  44. 如果操作的是更新语句(增删改), 返回的结果集是: int 类型
  45. 如果操作的是查询语句, 返回的结果集是: ResultSet 类型
  46. 6) 操作结果集.
  47. 7) 释放资源.
  48.  
  49. 5. JDBCAPI详解之: DriverManager(类)
  50. 作用: 主要用于驱动管理及获取连接对象的.
  51.  
  52. 作用一: 注册驱动.
  53. //MySQL/Oracle/SqlServer的驱动
  54. public static void registerDriver(Driver driver); //注册驱动的意思, 形参是谁的驱动, 就注册谁.
  55.  
  56. //Driver类就是MySQL数据库提供的 驱动类
  57. public class com.mysql.jdbc.Driver implements java.sql.Driver{
  58.  
  59. }
  60.  
  61. //我们不用上述的方式注册驱动, 因为上述注册驱动的方式会导致驱动程序注册两次.
  62. //所以: 我们通过反射的方式加载 com.mysql.jdbc.Driver类的字节码文件, 从而来自动 注册驱动.
  63. Class.forName("com.mysql.jdbc.Driver"); //驱动类的全路径
  64.  
  65. 作用二: 获取连接对象.
  66. public static Connection getConnection(String url, String username, String password); //获取连接对象.
  67. /*
  68. url: 数据库连接字符串.
  69. 格式:
  70. 连接方式:要操作的DBMS://要操作的数据库的IP地址或者主机名:端口号/要操作的具体的数据库
  71. 协议:子协议:要操作的DBMS://要操作的数据库的IP地址或者主机名:端口号/要操作的具体的数据库
  72.  
  73. 例如:
  74. jdbc:mysql://127.0.0.1:3306/tempDb
  75. jdbc:mysql://localhost:3306/tempDb
  76.  
  77. 如果操作的是本地数据库(DBMS), 上述的写法可以优化为:
  78. jdbc:mysql:///tempDb
  79.  
  80. username: 要操作的数据库(DBMS)的账号
  81.  
  82. password: 要操作的数据库(DBMS)的密码
  83.  
  84. */
  85.  
  86. 6. JDBCAPI详解之: Connection(接口)
  87. Connection: 连接对象
  88.  
  89. 作用一: 获取可以执行SQL语句的对象.
  90. public Statement createStatement(); //获取可以执行SQL语句的对象.
  91.  
  92. public PreparedStatement prepareStatement(String sql); //获取可以执行SQL语句的对象, 具有预编译功能, 可以解决SQL注入攻击问题.
  93.  
  94. 作用二: 可以进行事务管理.
  95. public void setAutoCommit(boolean flag); //设置是否开启事务的自动提交功能, 相当于我们昨天讲解的: 开启事务.
  96. public void commit(); //提交事务
  97. public void rollback(); //事务回滚
  98. public void setTransactionIsolation(int level); //设置事务的隔离级别
  99.  
  100. Connection接口中的常量:
  101. public static final int TRANSACTION_NONE = 0;
  102. public static final int TRANSACTION_READ_UNCOMMITTED = 1;
  103. public static final int TRANSACTION_READ_COMMITTED = 2;
  104. public static final int TRANSACTION_REPEATABLE_READ = 4;
  105. public static final int TRANSACTION_SERIALIZABLE = 8;
  106.  
  107. 7. JDBCAPI详解之: Statement(接口)
  108. Statement: 可以操作SQL语句的对象.
  109.  
  110. 作用一: 执行SQL语句.
  111. public ResultSet executeQuery(String sql); //执行查询语句
  112. public int executeUpdate(String sql); //执行更新语句
  113.  
  114. 作用二: 可以执行批处理. //批处理只针对更新语句有效.
  115.  
  116. public void addBatch(String sql); //把SQL语句添加到批处理(指令)中.
  117. public int[] executeBatch(); //执行批处理(指令)
  118. public void clearBatch(); //清除批出(指令)
  119. 8. JDBCAPI详解之: ResultSet(接口)
  120. ResultSet: 执行查询语句后的结果集对象.
  121.  
  122. public boolean next(); //判断结果集中是否还有数据. 类似于Iterator#hasNext().
  123.  
  124. public XXX getXxx(int columnIndex); //根据列的编号, 获取该列的信息, Xxx是数据类型的意思
  125. public XXX getXxx(String columnName); //根据列的名字, 获取该列的信息, Xxx是数据类型的意思, 建议用这种方式.
  126. //getInt(), getString(), getObject();
  1. Properties集合类:
  2. 概述: 它是一个双列集合, 键值都是String类型, 它是Hashtable集合的子类.
  3. //记忆: Properties集合是唯一可以直接和IO流相结合使用的集合类.
  4. //它可以直接从流中读取数据, 也可以直接写数据到流中.
  5.  
  6. 成员方法:
  7. public void load(InputStream is); //从流中读取数据
  8. public void load(Reader r); //从流中读取数据
  9.  
  10. public void store(OutputStream os); //写数据到流中
  11. public void store(Writer w); //写数据到流中
  12.  
  13. public String getProperty(String key); //根据键获取值
  14. public void setProperty(String key,String value); //设置键值对

java基础之JDBC一:概述及步骤详解的更多相关文章

  1. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  2. Java基础-进程与线程之Thread类详解

    Java基础-进程与线程之Thread类详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程与线程的区别 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 ...

  3. java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问

    本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...

  4. Java中JDBC连接数据库代码和步骤详解总结

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤:         1.加载JDBC驱动程序:         在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Jav ...

  5. Java 基础【08】.class getClass () forName() 详解

    类名.class是Class对象的句柄,每个被加载的类,在jvm中都会有一个Class对象与之相对应. 如果要创建新的对象,直接使用Class对象的局部class.forName就可以了,不需要用ne ...

  6. Java 基础【11】.class getClass () forName() 详解

    类名.class是Class对象的句柄,每个被加载的类,在jvm中都会有一个Class对象与之相对应. 如果要创建新的对象,直接使用Class对象的局部class.forName就可以了,不需要用ne ...

  7. Java基础(十四)--装箱、拆箱详解

    Java中基本数据类型都有相对应的包装类 什么是装箱?什么是拆箱? 在Java SE5之前,Integer是这样初始化的 Integer i = new Integer(10); 而在从Java SE ...

  8. Java基础系列(22)- For循环详解

    For循环 虽然所有循环结构都可以用while和dowhile表示,但是Java提供了另外一种语句for循环,使一些循环结构变动更加简单 for循环语句是支持迭代的一种通用结构,是最有效.最灵活的循环 ...

  9. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

随机推荐

  1. Dojo Chart之常用统计图

    很多做web的都知道,在很多web系统中会涉及到一些统计图,例如饼状图,柱状图.趋势图.以及叠加图等.提到这儿,做web的都很熟悉的,jquery的highcharts就能搞定所有的涉及到统计图的功能 ...

  2. shfileoperation 删除文件 FileDelete(CString strName)

    From:http://blog.csdn.net/lvwx369/article/details/41440883 注意:其中namePath 为全局变量 Cstring namePath; BOO ...

  3. phpcms V9二级目录下分页路径不正确问题的彻底解决方法

    在用phpcms V9做二次开发的时候,我们有时候会把一个栏目生成到根目录下,而且这个栏目又有子栏目,我们生成静态的时候分页会出现问题,就是分页的路径的地址错误.有一种解决方法就是,把这个栏目生成动态 ...

  4. ethtool常见命令使用方法

    查看网卡信息:ethtool DEVNAME Settings for eth6: Supported ports: [ FIBRE ] #可以看出网卡类型:光口或电口 Supported link ...

  5. 快速沃尔什变换FWT

    快速沃尔什变换\(FWT\) 是一种可以快速完成集合卷积的算法. 什么是集合卷积啊? 集合卷积就是在集合运算下的卷积.比如一般而言我们算的卷积都是\(C_i=\sum_{j+k=i}A_j*B_k\) ...

  6. [C/C++]宽字符与控制台程序

    转自:http://www.cnblogs.com/zplutor/archive/2010/11/27/1889227.html 在我刚开始学C/C++的时候,字符类型使用的都是char.接触Win ...

  7. flask+mongodb开发restful API

    Mac上安装mongodb 的方法:http://www.cnblogs.com/junqilian/p/4109580.html 实现博客的步骤 详细讲解步骤:https://blog.igevin ...

  8. 使用.NET Remoting开发分布式应用——基于租约的生存期

    一.概述 知名类型的SingleCall对象可以在客户程序的方法调用之后被垃圾收集器清理掉,因为它没有保持状态,属于无状态的.而客户激活的类型的对象和知名类型的SingleTon对象都属于生存期长的对 ...

  9. hive字段原理--有删除一列想到的

    hive删除一张表的字段不会动数据文件,只是修改了一下metadata表里面的表定义:所以会出现一种情况:就是这张表如果之前数据是满的(个格列都有数据),那么被删除的那列后数据都往前窜了一个,最后一个 ...

  10. Delphi AES加密(转)

    (**************************************************************) (* Advanced Encryption Standard (AE ...