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 blocke.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("数据库关闭");}
转载于:https://www.cnblogs.com/heartstage/p/3416601.html
JDBC操作数据库的基本流程相关推荐
- JavaWeb:用JDBC操作数据库
JDBC系列阅读 JavaWeb:用JDBC操作数据库 JavaWeb:JDBC之事务 JavaWeb:JDBC之数据库连接池 使用JDBC实现水果超市管理系统 1. 什么是JDBC JDBC的全称是 ...
- 25、jdbc操作数据库(2)
说一下使用jdbc时涉及到的一些基本的接口和类 java.sql.Driver 是数据库驱动接口,com.mysql.jdbc.Driver是mysql对应的驱动,由数据库供应商实现,用于提供驱动,实 ...
- 24、jdbc操作数据库(1)
什么是jdbc? 看一下官方怎么说,JDBC 英文名Java DataBase Connectivity,使用java连接数据库的工具,就是一组使用java代码来执行SQL语句的API. Jdbc有什 ...
- java监听数据库操作_第十六篇——JDBC操作数据库之监听器
JavaWeb应用中,很多的地方都和session有关.因此session相关的事件监听器,在日常工作中非常有用. 有时候我们需要统计当前在线的人数和访问人数总数,此时就可以使用监听器技术来很简单的实 ...
- Mybatis介绍、jdbc操作数据库原始写法以及Mybatis架构
文章目录 Mybatis介绍 jdbc操作数据库原生写法 使用jdbc编程问题总结 Mybatis架构 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个 ...
- jdba访问mysql_Java中JDBC操作数据库的步骤
Java中JDBC操作数据库的步骤,今天给喜欢Java开发或者是想要参加Java培训学习的小伙伴们分享一些Java技能干货,那就是Java阐述jdba操作数据库的步骤,废话不多说了,随小编一起来看一下 ...
- java完整JDBC操作数据库
java使用JDBC操作数据库的包含以下7个主要步骤: 1.加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的 ...
- 说说JDBC 操作数据库的步骤?
分析&回答 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操作结果集. ...
- 【JDBC】JDBC 简介 ( JDBC 概念 | JDBC 本质 | 使用 JDBC 操作数据库的好处 | JDBC 提供的 API 组件 )
文章目录 一.JDBC 概念 二.JDBC 本质 三.使用 JDBC 操作数据库的好处 四.JDBC 提供的 API 组件 一.JDBC 概念 JDBC 全称 Java DataBase Connec ...
最新文章
- 白领学python_大学生应该早早自学Python,Ps,Pr,office三件套,还是等到要用的时候再学?...
- Spring Security源码解析(四)—— 过滤器
- 使用ST05研究customer product id存储逻辑
- springboot websocket
- 作者:王志强(1975-),男,中国标准化研究院高新技术与信息标准化研究所副研究员、副所长。...
- (转)Hibernate框架基础——映射普通属性
- rxjava 观察者模式_RxJava可观察对象和观察者
- 【训练平台】mmdetection训练自己的标注数据, 以faster RCNN ,yolo为例子
- 酷派5890刷recovery详细教程
- 《学习之道》第十章学习方法28再次提到番茄时间
- 2022-2027年中国玩偶行业市场全景评估及发展战略规划报告
- 日期、时间、格式、补零(0、〇)操作、length、String、slice、getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds
- 如何爬取豆瓣电影?python十分钟搞定
- 7月份火爆Github的热门Python项目
- wox开机自启_快速启动神器 Wox
- angular primeng 弹出对话框修改
- python七段数码管显示学号_python小实例——七段数码管绘制
- Siteground和Bluehost对比,我花了7天时间研究出了结果
- RabbitMQ五种工作模式
- java aria,ARIA 标签和关系
热门文章
- 单链表的增删查改等基本操作C++实现
- mongodb 监控命令mongostat
- Debug javascript inside jsp page 调试jsp嵌入的js
- 杭电1860--统计字符
- Chinaren,逐渐变为垃圾了。
- Unable to execute dex: Multiple dex files define的解决办法
- ptrace和wait的理解 (ptrace监控进程)
- Understand Tasks and Back Stack--Defining launch modes
- 软件测试工程师需要具备哪些能力
- 系列(六)—Linux命令