1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC

2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成。

组成JDBC的2个包:

 (1)java.sql.*;

 (2)javax.sql.*;

3.JDBC在程序中的位置:



4.JDBC的六个固定步骤

   1。注冊数据库驱动[利用反射]

   2。取得数据库连接对象Connection

   3。创建SQL对象

   4。运行SQL命令,并返回结果集

   5。处理结果集

   6,依次关闭结果集  

5.JDBC的DriverManager对象:

(1).Jdbc程序中的DriverManager用于载入驱动,并创建与数据库的链接。这个API的经常用法:DriverManager.registerDriver(new Driver())。注意:在实际开发中,并不推荐採用这种方法注冊驱动。查看Driver的源码能够看到。假设採用此种方式,会导致驱动程序载入两次,也就是在内存中会有两个Driver对象。

  java.sql.Driver(接口)-com.mysql.jdbc.Driver(实现类)

(首先返回true)boolean acceptsURL(String url) 

         查询驱动程序是否觉得它能够打开到给定 URL 的连接。 

(然后)Connection connect(String url, Properties info) 

          试图创建一个到给定 URL 的数据库连接。 

(2).推荐方式:Class.forName(“com.mysql.jdbc.Driver”);採用此种方式不会导致驱动对象在内存中反复出现,而且採用此种方式,程序只只须要一个字符串,不须要import驱动的API。这样可使程序不依赖详细的驱动,使程序的灵活性更高。

DriverManager.getConnection(url, user, password),依据url获取数据库的链接。

6.数据库的URL

URL用于标识数据库的位置。程序猿通过URL地址告诉JDBC程序连接哪个数据库,

(1).经常使用数据库URL地址的写法:

Oracle—jdbc:oracle:thin:@localhost:1521:sid

SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid

MySql—jdbc:mysql://localhost:3306/sid

(2).Mysql的url地址的简写形式: jdbc:mysql:///sid

7.JDBC的Connection对象:

Jdbc程序中的Connection。它用于代表数据库的链接,Collection是数据库编程中最重要的一个对象,client与数据库全部交互都是通过connection对象完毕的,这个对象的经常用法:

    createStatement():创建向数据库发送sql的statement对象。

    prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。

prepareCall(sql):创建运行存储过程的callableStatement对象。 

    setAutoCommit(boolean autoCommit):设置事务是否自己主动提交。

commit() :在链接上提交事务。

rollback() :在此链接上回滚事务。

8.JDBC的statement:

Jdbc程序中的Statement对象用于向数据库发送SQL语句。 Statement对象经常用法:

    execute(String sql):用于向数据库发送随意sql语句

    executeQuery(String sql) :仅仅能向数据发送select语句。

    executeUpdate(String sql):仅仅能向数据库发送insert、update或delete语句

    addBatch(String sql) :把多条sql语句放到一个批处理中。

    executeBatch():向数据库发送一批sql语句运行。

clearBatch():清空缓冲

9.JDBC的ResultSet对象:

Jdbc程序中的ResultSet用于代表Sql语句的运行结果。

Resultset封装运行结果时。採用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标。初始的时候,游标在第一行之前,调用ResultSet.next() 方法,能够使游标指向详细的数据行。进行调用方法获取该行的数据。

(1)ResultSet既然用于封装运行结果的,所以该对象提供的都是用于获取数据的get方法:

获取随意类型的数据

    getObject(int index)

    getObject(string columnName)

获取指定类型的数据,比如:

    getString(int index)

    getString(String columnName)

(2).ResultSet还提供了对结果集进行滚动的方法:

     next():移动到下一行

    previous():移动到前一行

    absolute(int row):移动到指定行

    beforeFirst():移动resultSet的最前面。

    afterLast() :移动到resultSet的最后面。

10.MySQL和java的数据类型的转换



11.代码演示:

  1. package cn.wwh.www.java.jdbc;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7.  
  8. /**
  9. *类的作用:用来练习JDBC编程的,连接的数据库是MySQL
  10. *
  11. *
  12. *
  13. *
  14. *@author 一叶扁舟
  15. *@version 1.0
  16. *@创建时间: 2014-8-7 下午08:28:42
  17. */
  18. public class FirstJDBC {
  19. /**
  20. *建表语句:
  21. drop table if exists person;
  22. create table person(
  23. id int primary key auto_increment,
  24. name char(12),
  25. password char(12),
  26. sex char(2) );
  27. insert into person values(1,"wuhui",123456,"男");
  28. insert into person values(2,"一叶扁舟",123456,"男");
  29. */
  30. private static String driverClass = "com.mysql.jdbc.Driver";
  31. private static String url = "jdbc:mysql://127.0.0.1:3306/user";
  32. private static String user = "root";
  33. private static String password = "wwh";
  34.  
  35. public static void main(String[] args) throws Exception {
  36. //
  37. // 1.载入驱动
  38. // (1).方式1:
  39. // DriverManager.registerDriver(new Driver());
  40. // (2).方式2:利用反射的方式
  41. Class.forName(driverClass);
  42. // 使用DriverManager获取数据的连接,
  43. // 当中返回的Connection就代表java程序和数据库的连接
  44. /**
  45. * @param url
  46. * jdbc:subprotocol:subname 形式的数据库 url
  47. * @param user
  48. * 数据库用户,连接是为该用户建立的
  49. * @param password
  50. * 登录数据库的密码
  51. */
  52. Connection conn = DriverManager.getConnection(url, user, password);
  53.  
  54. Statement statement = conn.createStatement();
  55. String sql = "select * from person;";
  56. // 运行SQL命令,并返回符合条件的记录集合
  57. ResultSet result = statement.executeQuery(sql);
  58. // 採用两种方式接受查询的结果
  59. while (result.next()) {
  60. // 获取第1列的数据id
  61. int id = result.getInt(1);
  62. // 获取字段是name的数据结果
  63. String name = result.getString("name");
  64. String password = result.getString(3);
  65. String sex = result.getNString("sex");
  66.  
  67. System.out.println("id=" + id + "\tname=" + name + "\tpassword="
  68. + password + "\tsex=" + sex);
  69. }
  70. // 一次关闭数据库流
  71. result.close();
  72. statement.close();
  73. conn.close();
  74.  
  75. }
  76.  
  77. }

代码的測试效果截图:







JDBC编程理论知识(1)的更多相关文章

  1. Mysql——JDBC编程 理论介绍

    一.JDBC简介(来自俞琰--数据库老师) Java数据库编程主要使用JDBC技术.JDBC是一种用于执行SQL语句的Java API.它由一组用Java编写的类和接口组成.JDBC为开发人员提供了一 ...

  2. 用VC进行COM编程所必须掌握的理论知识

    一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...

  3. Winsock网络编程笔记(4)----基本的理论知识

    前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...

  4. JDBC理论知识

    JDBC理论知识 JDBC基础 JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统.通用的SQL数据库存取和操作的公共接口(一组API), 定义了用来访问数 ...

  5. JAVA基础知识之JDBC——编程步骤及执行SQL

    JDBC编程步骤 下面以mysql数据库为例, 1.加载驱动 首先需要下载数据库的驱动jar文件,并且在eclipse包中加入到class path中去, 例如mysql的驱动文件 mysql-con ...

  6. JDBC编程之事务的使用教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html  关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重  事务 ...

  7. 单独使用jdbc编程问题总结(一)

    在学习Mybatis之前,我们先来回顾JDBC编程的相关知识.在此基础上深入的学习Mybatis框架.如有错误,敬请指正. (一)首先我们既然要使用jdbc,当然是要操作数据库了.创建一个名为:myb ...

  8. 浅谈JDBC编程

    一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...

  9. [转] DDD领域驱动设计(三) 之 理论知识收集汇总

    最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...

随机推荐

  1. (wifi)wifi移植之命令行调试driver和supplicant

    前言 小弟从事android wifi framework部分开发已经有一年的时间了,虽然感觉什么都没有学习到,但是回想起刚接手android wifi时候的那份无知,其实肚子里面还是有点东西的,本着 ...

  2. c# GDI画图 双缓冲画图分析

    双缓冲绘图分析  1.Windows 绘图原理  我们在 Windows 环境下看到各种元素,如菜单.按钮.窗口.图像,从根本上说,都是“画”出来的.这时的屏幕,就相当于一块黑板,而 Windows ...

  3. Appium+python自动化17-启动iOS模拟器APP源码案例【转载】

    前言 上一篇已经可以启动iOS模拟器上的safari浏览器了,启动app比启动浏览器要复杂一点,本篇以github上的源码为案例详细介绍如何启动iOS模拟器的app 一.clone源码 1.githu ...

  4. Razor 常用方法

    结合wdate使用 //WdatePicker控件时间限制 @Html.TextBoxFor(model => model.BookingStart, new { @onClick = &quo ...

  5. (1)Java Spring

    Spring 4种关键策略: 基于POJO的轻量级和最小侵入编程 通过依赖注入和面向接口实现松耦合 基于切面和惯例进行声明式编程 通过切面和模板减少样板式代码

  6. (8)oracle 表的增删改

    表的命名 表需要字母开头 只能用如下字符 A-Z,a-z,0-9,$,#. 不能使用oracle保留字 长度不能超过30 创建一张表 create table 表名(字段名 数据类型,字段名 数据类型 ...

  7. Buffer源码深入分析

    博客园对MarkDown显示的层次感不是很好,大家可以看这里:Buffeer. 本机环境: Linux 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33 ...

  8. 信息批量提取工具bulk-extractor

    信息批量提取工具bulk-extractor   在数字取证中,通常需要面对海量的数据,如几百GB甚至TB级别的数据.从这些海量数据中,提取有价值的数据是一个漫长.枯燥.繁琐的过程.Kali Linu ...

  9. 左偏树自己的一点理解【hdu1512】【Monkey King】

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=34693563 向大(hei)佬(e)势力学(di ...

  10. cannot be cast to javassist.util.proxy.Proxy

    工程lib冲突 javassist-3.18.1-GA.jar javassist-3.11.0.GA.jar 删除一个