1.DriverManager用来建立和数据库的链接以及管理JDBC驱动程序

driverManager的常用方法

方法 描述
registerDriver(Driver driver) 在DerverManager中注册JDBC驱动程序
getConnection(String url,String user,String pwd) 建立和数据库的连接,返回Connection对象
setLoginTime(int seconds) 设定等待数据库连接的最长时间
setLogWriter(PrintWriter out) 设定输出数据库日志的PrintWriter对象

2.Connection代表Java程序和数据库的连接

Connection的常用方法

方法 描述
getMetaData()  获取一个 DatabaseMetaData 对象,该对象包含关于此 Connection 对象所连接的数据库的元数据。例如当前数据库连接的用户名,数据库的最大连接数,以及数据库的版本等。
createStatement() 创建并返回Statement对象
prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。

3.Statement用来执行静态的SQL语句。例如:对于insert,update和delete语句,可以调用executeUpdate(String sql)的方法;对于select语句,可以调用executeQuery(String sql方法),这个方法返回一个ResultSet对象。

例如:

String sql="select id,name,title,price from books where name='tom' and price=40";

ResultSet rs=stmt.executeQuery(sql);//stmt为Statement对象

4.PreparedStatement用来执行动态的SQL语句。

例如:

String sql="select id,name,title,price from books where name=? and price=?";

在这种情况,用PreparedStatement比Statement更方便,因为PreparedStatement允许sql语句中包含参数。

PreparedStatement具体使用如下:

(1)生产PreparedStatement对象。例如:SQL语句中name的值和price的值都用"?"来替代,他们表示两个可以被替换的参数:

  String sql="select id,name,title,price from books where name=? and price=?";

  PrepareStatement prepStmt=conn.prepareStatement(sql);

(2)调用PreparedStatement的setxxx方法,给参数赋值:

  prepStmt.setString(1,"tome");

  prepStmt.setString(2,40);

(3)执行SQL语句:

  ResultSet=prepStmt.executeQuery();

5.ResultSet表示select语句查询得到的记录集合。

(1)ResultSet的记录行号从1开始,一个Statement对象在同一时刻只能打开一个ResultSet对象。调用ResultSet的next()方法可以使游标定位到下一条记录。调用ResultSet的getxxx()方法可以取得某个字段的值。

(2)ResultSet既可以通过字段的序号来指定字段,也可以通过字段的名字来指定字段。

例如:

String sql="select id,name,title,price from books where name='tome' and price=40";

ResultSet rs=stmt.executeQuery(sql);

如果要访问id字段,可以用

rs.getString(1); 或者rs.getString("id");

如果要取出ResultSet中所有记录,可以采用下面的循环语句:

while(rs.next()){

  String col1=rs.getString(1);

  String col2=rs.getString(2);

  String col3=ts.getString(3);

  float col4=rs.getFloat(4);

}

6.总结介绍JDBC访问数据库的步骤

  (1)装载并注册数据库JDBC驱动程序,(其中JDBC-ODBC Driver是在JDK中自带的,默认已经注册,所以不需要再注册)

    //装载JdbcOdbcDriver.class(只需要装载,不需要注册)

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //装载并注册SQLServerDriver

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

    java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

    //装载并注册OracleDriver

    Class.forName("oracle.jdbc.driver.OracleDriver");

    java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    //装载并注册MySQLDriver

    Class.forName("com.mysql.jdbc.Driver");

    java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());//这个注册不上必要的

    说明:

      对于mysql的驱动程序类com.mysql.jdbc.Driver,在JVM加载这个类时,会执行以下静态代码

      static{

        try{

          java.sql.DriverManager.registerDriver(new Driver());

        }catch(){

          throw new RuntimeException("..");

        }

        ....

      }

      所以程序中只要通过Class.forName方法加载mysql driver类即可,可以不需要再注册。

  (2)建立与数据库的连接

    Connection conn=java.sql.DriverManager.getConnection(url,user,password);

    mysql: url="jdbc:mysql://localhost:3306/dbName";

  (3)创建Statement对象,准备调用SQL语句

    Statement stmt=conn.createStatement();

  (4)调用SQL语句:

    String sql="select id,name,title,price from books where name='tom' and price=40";

    ResultSet rs=stmt.executeQuery(sql);

  (5)访问ResultSet中的记录集    

  (6)一次关闭 ResultSet,Statement和Connection对象:

    rs.close();

    stmt.close();

    conn.close();

7.事务处理

  (1)在Connection类中提供了3个控制事物的方法:

    setAutoCommit(boolean autoCommit);设置是否自动提交事物

    commit();提交事物

    rollback();回滚事物

  (2)在DJBC API中,默认情况下为自动提交事物。可以通过调用setAutoCommit(false)来禁止提交事物。

    try{

      con.java.sql.DriverManager.getConnection(dbUrl,user,dbPwd);

      //禁止自动提交,设置回滚点

      con.setAutoCommit(false);

      stmt=con.createStatement();

      //数据库更新操作1

      stmt.executeUpdate("update account set money=money-1000 where name='zhangsan'");

      //数据库更新操作2

      stmt.executeUpdate("update account set money=money+1000 where name='lisi'");

      //事物提交

      con.commit();

    }catch(Exception e){

      e.printStackTrace();

      //操作不成功事物回滚

      con.rollback();

    }finally{

      stmt.close();

      con.close();

    }

JDBC介绍的更多相关文章

  1. JDBC(1):JDBC介绍

    一,JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC.这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加 ...

  2. 关于Java(JDBC介绍)

    JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的. JDBC 简单功能 连接数据源,如数据库 传给数据库查询和更新指令 获取并处理数据库返回结果(对查询等的响应) 示例代码 ...

  3. JAVA记录-JDBC介绍

    JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 ...

  4. (一)mybatis之JDBC介绍

    前言:为什么在学mybatis之前要先了解JDBC呢?因为mybatis是以ORM模型为中心思想的框架,而所有的ORM模型都是基于JDBC进行封装的,不同的ORM模型对JDBC封装的强度是不一样的. ...

  5. 【Spring JDBC】spring jdbc 介绍(一)

    Spring JDBC模块是Spring框架的基础模块之一.在Spring JDBC模块中,所有的类可以被分到四个单独的包: core 核心包:它包含了JDBC的核心功能.此包内有很多重要的类,包括: ...

  6. JDBC介绍和Mybatis运行原理及事务处理

    本博客内容非自创,转载自以下三位,侵删: https://juejin.im/post/5ab7bd11f265da23906bfbc5 https://my.oschina.net/fifadxj/ ...

  7. day17-jdbc 2.jdbc介绍

    SQL是一种非过程性语言,只能写一条嘛,你写多条不行嘛.每个数据库都有自己的存储过程.你可以做编程,你可以写多条SQL语句把它放到一起.这就是存储过程.然后用的时候一调它就执行这个逻辑结构了.因为多条 ...

  8. 成都传智播客JDBC视频及讲师介绍

    成都传智播客java讲师,也许,你跟他很熟,你或者听过他的课,或者跟他争论过什么,又或者你们在一起共事,再者你们只是偶尔擦肩而过.在小编的印象中郭老师完全没有架子,和他相处会让你觉得不是面对一个老师, ...

  9. JDBC相关概念介绍

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

随机推荐

  1. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  2. Dropzone.js实现文件拖拽上传

    dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 使用Dropzo ...

  3. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  4. 体验报告:微信小程序在安卓机和苹果机上的区别

    很多人可能会问:微信小程序和在微信里面浏览一个网页有什么区别? 首先,小程序的运行是全屏的,界面跟进入了一个APP很像,更为沉浸跟在微信里面访问h5不一样:其次,它的浏览体验更为稳定. 不过,这还不够 ...

  5. BI分析受阻?FineBI推出SPA螺旋式分析新功能!

    过去,企业级的数据分析通常会有这么几种场景,业务部门托信息部门分析数据,结果报表一出,唇枪舌剑争论你我高低,数据不准,指标不对.信息部门欠缺业务概念,业务部门不懂技术逻辑,数据分析之路,暂时搁浅. 后 ...

  6. Android Studio分类整理res/Layout中的布局文件(创建子目录)

    res/layout中的布局文件太杂,没有层次感,受不了的我治好想办法解决这个问题. 前几天看博客说可以使用插件分组,可惜我没找到.知道看到另一篇博客时,才知道这个方法不能用了. 不能用插件,那就手动 ...

  7. 自定义控件之 圆形 / 圆角 ImageView

    一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的:       二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...

  8. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...

  9. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

  10. 豪情-CSS解构系列之-新浪页面解构-01

    目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...