浅谈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.入门程序的实现 注:介绍方面的 ...
随机推荐
- BOOL、sizeof
BOOL使用前需要声明 #include <stdbool.h>(这个头文件定义了bool,true,false等宏) int a[5]; sizeof(a[5]),sizeof是关键字, ...
- 转载:Ajax及 GET、POST 区别
转载:Ajax及 GET.POST 区别 收获: xhr.setRequestHeader(), xhr.getResponseHeader() 可以设置和获取请求头/响应头信息; new FormD ...
- Android TextWatcher应用实例
(1)使用TextWathcer限制输入字符个数布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中 ...
- [置顶] What is the difference between Category and Class Extension?
细心的人会发现当我们new 一个文件的时候会发现下图的部分. 但是这个问题来了Category 和 Extension 就近又什么区别呢? 1:什么是Category? 实现这样一种场景,当我们用我们 ...
- BZOJ 4503 两个串(FFT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4503 [题目大意] 给出S串和T串,计算T在S中出现次数,T中有通配符'?'. [题解 ...
- Codeforces 123E Maze(树形DP+期望)
[题目链接] http://codeforces.com/problemset/problem/123/E [题目大意] 给出一棵,给出从每个点出发的概率和以每个点为终点的概率,求出每次按照dfs序从 ...
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本
我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...
- HDU1046:Gridland
Problem Description For years, computer scientists have been trying to find efficient solutions to d ...
- 编写可维护的JS 01
1.编程风格 缩进层级 使用制表符进行缩进 2个/4个空格缩进 语句结尾 不省略分号 行的长度 不超过80个字符 换行 在运算符后面换行 空行 在以下场景中添加: 方法之间 在方法中局部变量与第一条语 ...
- AngularJS Directive 学习笔记
指令 Directive 指令要点 大漠老师的教学节点 解析最简单的指令 hello: 匹配模式 restrict 解析最简单的指令 hello: template.tempmlateUrl.$tem ...
