浅谈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.入门程序的实现 注:介绍方面的 ...
随机推荐
- hdu 1524 A Chess Game 博弈
题目链接 给出一个有向无环图, 上面放有一些棋子, 两个人轮流移动棋子, 当一个人无法移动时, 算输. 求出每一个点的sg值, 异或就可以.出度为0的点sg值为0. #include<bits/ ...
- Category、Extension
Category,分类,类目.主要作⽤用是为没有源代码的添加方法,例系统自带的NSString. 通过Category添加的方法会成为原类的一部分.从⽽而达到扩展一 个类的功能. Category ...
- 黑马12期day01之html&css
html注释:<!-- --> html中不支持空格.回车.制表符都会被解析成一个空格 <pre></pre>标签内以上三个会被正常解析. <font> ...
- AngularJS bootStraping
看这个 http://www.dotnet-tricks.com/Tutorial/angularjs/5aWL261214-Understanding-AngularJS-Bootstrap-Pro ...
- 疯狂的补贴,广州司机都被Uber触动
“上线的司机起码少了一半.” 或许是因为长期工作超过12个小时的缘故,39岁的广州人民优步司机姜德昌看上去双眼浮肿,但精力充沛.这是5月8日的一个下午,一周之前他所服务的Uber广州分公司被查封. 据 ...
- XML 文档解析操作
sing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security; ...
- js中this指向问题
1.在全局范围内使用this的时候 它指向的是全局对象 this Window {top: Window, window: Window, location: Location, external: ...
- BZOJ 2329: [HNOI2011]括号修复( splay )
把括号序列后一定是))))((((这种形式的..所以维护一个最大前缀和l, 最大后缀和r就可以了..答案就是(l+1)/2+(r+1)/2...用splay维护,O(NlogN). 其实还是挺好写的, ...
- PHP冒泡排序法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. 冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他 ...
- centos6.5安装pysider遇见的坑
一.服务器自带pyhon2.7.9 安装pip, # yum -y install python-devel python-setuptool wget http://pypi.python.org/ ...
