浅谈JDBC(一)
一、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(一)的更多相关文章
- 浅谈JDBC访问MySQL数据库
经过我自己的总结后,其实很简单,只需要记住四个步骤,JDBC这部分的学习就可以掌握差不多了,请多多指教. 加载注册JDBC驱动: 打开数据库: 创建向数据库发送sql语句的statement: Res ...
- 浅谈JDBC编程
一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...
- 浅谈JDBC(二)
JDBC中的事务 简单来说,事务就是要保证一组DAO方法的操作,要么一起成功要么一起失败. 1.事务控制的位置 在Service中的业务方法内进行事务控制. 2.事务控制的代码 a.注意:JDBC会自 ...
- 浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣
先说下这俩到底是干啥的吧.其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句.说是CreateStatement和PrepareStatement ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- !! 浅谈Java学习方法和后期面试技巧
浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...
- Hibernate更新部分字段浅谈
update语句是在Hibernate的Configuration的时候生成的,不能动态改变.为什么update的时候所有的属性都一起update,而不是只更新改变字段,其实这是一个比较值得探讨的问题 ...
- [转]浅谈Hive vs. HBase 区别在哪里
浅谈Hive vs. HBase 区别在哪里 导读:Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,Apache HBase是运行于HDFS顶层的NoSQL(=No ...
- 阿里P7浅谈SpringMVC
一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...
随机推荐
- 树莓派高级GPIO库,wiringpi2 for python使用笔记(二)高精度计时、延时函数
学过单片机的同学应该清楚,我们在编写传感器驱动时,需要用到高精度的定时器.延时等功能,wiringpi提供了一组函数来实现这些功能,这些函数分别是: micros() #返回当前的微秒数,这个数在调用 ...
- 《Pointers On C》读书笔记(第二章 基本概念)
1.从源代码到生成可执行程序的过程整体上可以分为两个阶段:编译和链接.其中,编译过程大致上又可分为:预处理.编译和汇编.预处理阶段主要对源代码中的预处理指令(包含宏定义指令<如 #define& ...
- Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)
一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...
- Android UI--ViewPager扩展Tab标签指示
Android UI--ViewPager扩展Tab标签指示 2013年8月30日出来冒冒泡 ViewPager这个控件已经不算是陌生的了,各种玩Android的小伙伴们都有发表相应的文章来讲它.我看 ...
- lambda表达式和闭包
lambda表达式和闭包 熟悉的Javascript或者Ruby的同学,可能对另一个名词:闭包更加熟悉.因为一般闭包的示例代码,长得跟lambda差不多,导致我也在以前很长一段时间对这两个概念傻傻分不 ...
- 解决[warn] _default_ VirtualHost overlap on port 80, the first has precedence问题
问题背景: 在apache的httpd.conf里新增加了1个VirtualHost,域名是xxx.com,此时,服务器总共2个VirtualHost ,service httpd restart的时 ...
- andrewchilds/jQuery.DomOutline
andrewchilds/jQuery.DomOutline DOM - 使用Javascript:让用户选择一个类似Firebug的HTML元素? -
- cc150:实现一个算法来删除单链表中间的一个结点,仅仅给出指向那个结点的指针
实现一个算法来删除单链表中间的一个结点,仅仅给出指向那个结点的指针. 样例: 输入:指向链表a->b->c->d->e中结点c的指针 结果:不须要返回什么,得到一个新链表:a- ...
- C# 动态载入Dll
1.新建測试dll及方法,用vs2010新建winform程序,详细代码例如以下: using System; using System.Collections.Generic; using Syst ...
- POST 方式上传图片
Post 方式 模仿 form表单 上传 图片 设置enctype = multipart/form-data <form enctype="multipart/form-data&q ...
