一、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. MYSQL group_concat() 函数

    看来看一下表中的数据 select * from t; 下一步来看一下group_concat函数的用法 select ID,group_concat(Name) from t group by ID ...

  2. JSP打印九九乘法表

    ##index.jsp: <%@ page language="java" import="java.util.*" pageEncoding=" ...

  3. dp-史上最戳最长最臭代码-hdu-4733-G(x)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4733 题目大意: 定义G(x)=x⊕(x>>1).给两个由0.1.?组成的长度相同的字符 ...

  4. objective-C Ⅱ

    objective-C Ⅱ      接第一讲 objective-c初识 一.oc中的数组:NSArray 定义: NSArray *arrayName=[NSArray arrayWithObje ...

  5. Mac经常使用快捷键

    Mac使用快捷键会节省非常多时间.使用最多的键就是shift键  option键 command键的组合了.当然一下略微用得多一点点,还有非常多快捷键没一一列举了 进入指定文件夹的一些快捷键 进入 A ...

  6. Asp.net 提供程序模型

    需要说明一下几点 1.什么是提供程序? 2.ASP.NET 4.5 中的提供程序 3.配置提供程序 有一下几种存储状态的方式 1.应用程序状态 2.会话状态 3.高速缓存状态 4.cookie 5.查 ...

  7. SQL Server 数据控制语句(DCL)

    DCL控制语句用来设置更改用户或角色的权限. 授予权限操作——GRANTSQL Server服务器通过手语权限表来控制用户对数据库的访问.在数据库中添加一个新用户之后,若不尽兴额外操作,该用户只有ch ...

  8. C#高级编程技术复习一

    从基本的Socket编程进入 (注意:这是转的一篇2011年的文章,有些知识可能该更新了!) 这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Soc ...

  9. 2045不容易系列之(3)—— LELE的RPG难题

    Problem Description人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即”可乐”),经过多方打探,某资深Cole终于知道了原因,原 ...

  10. 重定向输入输出流--freopen

    freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流.该函数可以在不改变代码原貌的情况下改变输入输出环境. C99函数声明: FILE *freope ...