一、JDBC技术引言

  1、什么是JDBC技术

     提供了一套接口规范,利用java代码进行数据库操作。

  2、JDBC技术的核心思想

    

    对于程序员来说,代码访问数据库分为三个步骤:1、通过数据库的账号密码。2、用代码执行sql语句。3、接收查询的结果并展示。并且这些步骤应该是规避数据库差异的,不同的数据库产品应该用同一套规范代码。而java所提供的三个基础接口正是起的这个作用:Connection、PreparedStatement、ResultSet。java要求不通的数据库公司根据java所提供的接口来写相应的驱动jar包,这样的话,程序员就只需根据不同的数据库产品导入相应的驱动jar包即可,而编程步骤则是没有改变的。

二、基础代码

  1、JDBCUtil的简单版本实现(mysql)

    

 public class JDBCUtil{        static{      Class.forName("com.mysql.jdbc.Driver");
    }
     //创建连接
     public static Connection getConnection() throws Exception{
         //加载驱动
         Conection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","12345678");       return conn;
     }

     //关闭资源
     public static void close(Conection conn,PreparedStatement pstmt,ResultSet rs){
         if(rs!=null){
             rs.close();
         }
         if(pstmt!null){
             pstmt.close();
         }
         if(conn!=null){
             conn.close();
         }
 }

  这段代码是对jdbc重复操作的简单封装,主要将拿连接和关闭资源的操作封装成了静态方法,方便以后使用。

  2、JDBC的编程步骤

    a、环境搭建  导入数据库相关的驱动jar

    b、加载驱动 将对应的数据库产品对于3个接口的实现 读入程序中。

    c、创建连接Connection  注意:提供用户名 密码。

    d、创建PreparedStatement 执行sql语句  注意 提供sql语句

    e、若进行的查询操作,ResultSet应处理查询结果

    f、关闭资源。

 String sql = "select * form t_user where name =? ";
 PreparedStatement pstmt = conn.prepareStatement(sql);
 pstmt.setString("Lee");
 ResultSet rs = pstmt.executeQuery();

    这段是d、e步骤的简单代码:

    可以看到PreparedStatement对象是通过Connection对象获得的,获得的同时可以传入需要执行的sql语句。而传入的sql语句是含有占位符"?"的,占位符的内容也是由PreparedStatement对象下的方法来进行填充的,其中的方法不仅有上述的setString,还有setInt()、setDouble()、setDate()等多种方法。最后是用PreparedStatement对象下的executeQuery()来返回所查询的结果集,其中的方法有三种:

    a、public ResultSet executeQuery()  返回一个不为空的结果集

    b、public int executeUpdate()  返回值有两个:(1)返回insert、update或者delete语句执行后的影响行数。(2)返回0表示sql语句没有执行成功。

    c、public boolean execute()  返回ture:表示sql语句执行的结果为ResultSet对象,返回false表示sql语句执行结果为影响行数或者没有返回。

    如何遍历ResultSet对象:

 //代码仅为示例
 while(resultSet.next()){
     Book book = new Book();
     book.setBookName(resultSet.getString("bookName"));
     book.setPrice(resultSet.getString("price"));
     book.setPicUrl(resultSet.getString("picUrl"));
     list.add(book);
  }

    可以想象ResultSet对象中存有多条数据,ResultSet对象有next()方法,该方法的内部有一个指针指向当前该条数据,如果指针下有数据,执行next()方法的时候返回的是true,next()方法执行完之后,指针自动跳到下一条数据上。所以用while循环,当指针指向null的时候,也是ResultSet对象中的数据遍历结束的时候,该while循环便终止。所有的数据就都存入到List集合中去了。

  

 

    

    

    

           

    

  

浅谈JDBC(一)的更多相关文章

  1. 浅谈JDBC访问MySQL数据库

    经过我自己的总结后,其实很简单,只需要记住四个步骤,JDBC这部分的学习就可以掌握差不多了,请多多指教. 加载注册JDBC驱动: 打开数据库: 创建向数据库发送sql语句的statement: Res ...

  2. 浅谈JDBC编程

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

  3. 浅谈JDBC(二)

    JDBC中的事务 简单来说,事务就是要保证一组DAO方法的操作,要么一起成功要么一起失败. 1.事务控制的位置 在Service中的业务方法内进行事务控制. 2.事务控制的代码 a.注意:JDBC会自 ...

  4. 浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣

    先说下这俩到底是干啥的吧.其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句.说是CreateStatement和PrepareStatement ...

  5. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  6. !! 浅谈Java学习方法和后期面试技巧

    浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...

  7. Hibernate更新部分字段浅谈

    update语句是在Hibernate的Configuration的时候生成的,不能动态改变.为什么update的时候所有的属性都一起update,而不是只更新改变字段,其实这是一个比较值得探讨的问题 ...

  8. [转]浅谈Hive vs. HBase 区别在哪里

    浅谈Hive vs. HBase 区别在哪里 导读:Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,Apache HBase是运行于HDFS顶层的NoSQL(=No ...

  9. 阿里P7浅谈SpringMVC

    一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...

随机推荐

  1. hdu 4289 Control 网络流

    题目链接 给出一些点, 每个点有一个权值, 给出一些边, 起点以及终点, 去掉一些点使得起点和终点不连通, 求最小的val. 拆点, 把一个点s拆成s和s', 之间建一条边, 权值为点权. 对于一条边 ...

  2. python 字符串探讨

    本文内容基于python3 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出.字符串的学习是重点中的重点,这一节将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等.大部 ...

  3. Nuget升级问题

    想在项目中通过“Add Library Package Reference”添加Moq,结果出现错误提示说Nuget版本太低. 要升级Nuget需要先卸载原来的Nuget. 1.在控制面板,卸载程序里 ...

  4. Git-常用命令集合

    该文章会陆续添加内容,学习网页来自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 ...

  5. 半模对话框 QProgressDialog

    http://doc.qt.io/qt-4.8/qprogressdialog.html progressdialog 用到了qfuture http://blog.csdn.net/liang198 ...

  6. openStack windows2008 centos6.* img

    1,下载 windows2008 系统iso介质包 http://download.microsoft.com/download/F/3/8/F384E78B-8F1D-42A6-A308-63E45 ...

  7. java常用日期函数总结

    请记得要引入java.util.Date和java.text.SimpleDateFormat两个包 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance( ...

  8. uva-12657 - Boxes in a Line(双向链表)

    12657 - Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to righ ...

  9. Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动

    腾讯科技对Android首席设计师Duarte"移动已死"訪谈内容的翻译错得离谱,被到处转载,误人视听. 而要真正理解Duarte所想表达的含义,须要深入了解互联网前沿设计理念以及 ...

  10. c/c++处理参数

    直接上代码:涉及函数getopt(),getopt_long() #include <unistd.h> #include <stdlib.h> #include <st ...