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. GIT笔记命令行(1)

    Git简单易用,只要输入git就可以列出他的所有参数 C:\Users\spu>git usage: git [--version] [--help] [-C <path>] [-c ...

  2. SQL-日期函数

    GETDATE() :取得当前日期时间 DATEADD (datepart , number, date ),计算增加以后的日期.参数date为待计算的日期:参数number为增量:参数datepar ...

  3. Akka.NET v1.0 已发布,支持Mono

    Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 Mono 平台之上.Akka.NET 经过一年多的努 ...

  4. C#与yaml解析

    YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准".YAML Ain't Markup Language,和GNU一样,YAML是一个递归着说&quo ...

  5. 认识ASP.NET 5项目结构和项目文件xproj

    ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...

  6. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  7. Jvm --- 常用工具

    jps:虚拟机进程状况工具 JVM Process Status Tool. 可以列出所有目前正在运行虚拟机的进程. jps -l 详细参数: -q 输出LVMID,省略主类名称 -m 输出虚拟机进程 ...

  8. ABP源码分析四十五:ABP ZERO中的EntityFramework模块

    AbpZeroDbContext:配置ABP.Zero中定义的entity的Dbset EntityFrameworkModelBuilderExtensions:给PrimitiveProperty ...

  9. 命令行查看Windows激活信息(win7、win8、win10...)

    使用:Win+ R 组合键,打开运行命令框,复制命令,粘贴后回车. slmgr.vbs -xpr 查询Windows是否永久激活slmgr.vbs -dlv 查询到Windows的激活信息,包括:激活 ...

  10. eclipse 突然 一直在loading descriptor for XXX (XXX为工程名)Cancel Requested

    问题: eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作. 如下图所示,保存文件也无法保存.  这个怎么办? ...