JDBC操作数据库的基本流程
所有的JDBC应用程序都具有下面的基本流程:
1、加载数据库驱动并建立到数据库的连接。
2、执行SQL语句。
3、处理结果。
4、从数据库断开连接释放资源。
下面我们就来仔细看一看每一个步骤:
其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。
1、加载数据库驱动并建立到数据库的连接:
- String driverName="com.mysql.jdbc.Driver";
- String connectiionString="jdbc:mysql://10.5.110.239:3306/test?"+"user=root&password=chen&characterEncoding=utf-8";
- Connection connection=null;
- try {
- Class.forName(driverName);//这里是所谓的数据库驱动的加载
- connection=(Connection) DriverManager.getConnection(connectiionString);//这里就是建立数据库连接
- System.out.println("数据库连接成功");
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return connection;
String driverName="com.mysql.jdbc.Driver";
String connectiionString="jdbc:mysql://10.5.110.239:3306/test?"+"user=root&password=chen&characterEncoding=utf-8";
Connection connection=null;
try {
Class.forName(driverName);//这里是所谓的数据库驱动的加载
connection=(Connection) DriverManager.getConnection(connectiionString);//这里就是建立数据库连接
System.out.println("数据库连接成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
2、执行SQL语句:
在执行sql语句的时候,这里常见的有两种类型的语句对象:
Statement:它提供了直接在数据库中执行SQL语句的方法。对于那些只执行一次的查询、删除或者一种固定的sql语句来说已经足够了。
- Statement statement=(Statement) dUtil.getConnection().createStatement();
- String sql="delete from diary where title="+"'"+title+"'";
- int count=statement.executeUpdate(sql);
- System.out.println("删除成功");
Statement statement=(Statement) dUtil.getConnection().createStatement(); String sql="delete from diary where title="+"'"+title+"'"; int count=statement.executeUpdate(sql); System.out.println("删除成功");
Preparedstatement:这种语句对象用于那些需要执行多次,每次仅仅是数据取值不同的SQL语句,它还提供了一些方法,以便指出语句所使用的输入参数。
- String sql="insert into diary(title,content,authorname,time) values(?,?,?,now())";
- try {
- PreparedStatement preparedStatement=(PreparedStatement) dUtil.getConnection().prepareStatement(sql);
- String title=diary.getTitle();
- String content=diary.getContent();
- String authorname=diary.getAuthorName();
- preparedStatement.setString(1, title);
- preparedStatement.setString(2, content);
- preparedStatement.setString(3, authorname);
String sql="insert into diary(title,content,authorname,time) values(?,?,?,now())";
try {
PreparedStatement preparedStatement=(PreparedStatement) dUtil.getConnection().prepareStatement(sql);
String title=diary.getTitle();
String content=diary.getContent();
String authorname=diary.getAuthorName();
preparedStatement.setString(1, title);
preparedStatement.setString(2, content);
preparedStatement.setString(3, authorname);
3、处理结果:
- ResultSet resultSet=statement.executeQuery(sql);
- while (resultSet.next()) {
- Diary diary=new Diary();
- diary.setAuthorName(resultSet.getString("authorname"));
- diary.setContent(resultSet.getString("content"));
- diary.setTitle(resultSet.getString("title"));
- diary.setId(resultSet.getInt("id"));
- Date time=resultSet.getDate("time");
ResultSet resultSet=statement.executeQuery(sql);
while (resultSet.next()) {
Diary diary=new Diary();
diary.setAuthorName(resultSet.getString("authorname"));
diary.setContent(resultSet.getString("content"));
diary.setTitle(resultSet.getString("title"));
diary.setId(resultSet.getInt("id"));
Date time=resultSet.getDate("time");
此处,应该知道的是:Statement执行sql语句的方法:insert、Update、delete语句是使用了Statement的executeUpdate方法执行的,返回结果是插入、更新、删除的个数。而select语句执行较为特别是使用了Statement的executeQuery方法执行的。返回的结果存放在resultset结果集中,我们可以调用next()方法来移到结果集中的下一条记录。结果集由行和列组成,各列数据可以通过相应数据库类型的一系列get方法(如getString,getInt,getDate等等)来取得。
4、从数据库断开连接释放资源:
在结果集、语句和连接对象用完以后,我们必须正确地关闭它们。连接对象、结果集对象以及所有的语句对象都有close()方法,通过调用这个方法,我们可以确保正确释放与特定数据库系统相关的所有资源。
- public static void closeConnection(ResultSet resultSet,PreparedStatement preparedStatement, Connection connection) throws SQLException {
- if (resultSet!=null) resultSet.close();
- if (preparedStatement!=null) preparedStatement.close();
- if(connection!=null&&connection.isClosed()==false) connection.close();
- System.out.println("数据库关闭");
- }
public static void closeConnection(ResultSet resultSet,PreparedStatement preparedStatement, Connection connection) throws SQLException { if (resultSet!=null) resultSet.close();
if (preparedStatement!=null) preparedStatement.close();
if(connection!=null&&connection.isClosed()==false) connection.close();
System.out.println("数据库关闭"); }
JDBC操作数据库的基本流程的更多相关文章
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- JDBC操作数据库的基本步骤:
JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...
- springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务
springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...
- Spring入门(十五):使用Spring JDBC操作数据库
在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
随机推荐
- Super Moban
HAO BAN ZI 包括求解,判断无解,求自由变元个数以及标记不确定的变元.来源:http://blog.csdn.net/keshuqi/article/details/51921615 #inc ...
- git使用笔记(八)团队协作
By francis_hao Nov 24,2016 本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可.欢迎转载,请注明出处 ...
- shell脚本应用
解析乱的日志文件到临时文件中,然后用awk 1004 cd /usr/local 1005 ll 1006 cd pttmsg/ 1007 ll 1008 cd msgbin-2/ ...
- linux 下查看网卡工作速率
[root@hadoop058 ~]# mii-tool eth0: negotiated 100baseTx-FD, link ok 100M linux 下查看网卡工作速率 Ethtool是用于查 ...
- DOM操作的一个小坑
最近在苦读<JavaScript高级程序教程>,真不愧是前端圣经,学到了很多东西. nodeList.NameNodeMap.HTMLCollection这三个集合是动态的!每当文档发生变 ...
- [BZOJ1040] [ZJOI2008]骑士 解题报告
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...
- (转载)常用的Python库
http://forum.ubuntu.com.cn/viewtopic.php?f=63&t=249573&p=2640959 Tkinter ---- Python默认的图形界面接 ...
- 最近研究xcodebuild批量打包的一些心得
http://blog.csdn.net/tlb203/article/details/8131707 转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的,不但开发的时候要适配一 ...
- python学习笔记 异步asyncio
asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要 ...
- a标签里文本居中
text-align:center; height: 30px; line-height:30px;