JDBC介绍
1.DriverManager用来建立和数据库的链接以及管理JDBC驱动程序
driverManager的常用方法
方法 | 描述 |
registerDriver(Driver driver) | 在DerverManager中注册JDBC驱动程序 |
getConnection(String url,String user,String pwd) | 建立和数据库的连接,返回Connection对象 |
setLoginTime(int seconds) | 设定等待数据库连接的最长时间 |
setLogWriter(PrintWriter out) | 设定输出数据库日志的PrintWriter对象 |
2.Connection代表Java程序和数据库的连接
Connection的常用方法
方法 | 描述 |
getMetaData() | 获取一个 DatabaseMetaData 对象,该对象包含关于此 Connection 对象所连接的数据库的元数据。例如当前数据库连接的用户名,数据库的最大连接数,以及数据库的版本等。 |
createStatement() | 创建并返回Statement对象 |
prepareStatement(String sql) | 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。 |
3.Statement用来执行静态的SQL语句。例如:对于insert,update和delete语句,可以调用executeUpdate(String sql)的方法;对于select语句,可以调用executeQuery(String sql方法),这个方法返回一个ResultSet对象。
例如:
String sql="select id,name,title,price from books where name='tom' and price=40";
ResultSet rs=stmt.executeQuery(sql);//stmt为Statement对象
4.PreparedStatement用来执行动态的SQL语句。
例如:
String sql="select id,name,title,price from books where name=? and price=?";
在这种情况,用PreparedStatement比Statement更方便,因为PreparedStatement允许sql语句中包含参数。
PreparedStatement具体使用如下:
(1)生产PreparedStatement对象。例如:SQL语句中name的值和price的值都用"?"来替代,他们表示两个可以被替换的参数:
String sql="select id,name,title,price from books where name=? and price=?";
PrepareStatement prepStmt=conn.prepareStatement(sql);
(2)调用PreparedStatement的setxxx方法,给参数赋值:
prepStmt.setString(1,"tome");
prepStmt.setString(2,40);
(3)执行SQL语句:
ResultSet=prepStmt.executeQuery();
5.ResultSet表示select语句查询得到的记录集合。
(1)ResultSet的记录行号从1开始,一个Statement对象在同一时刻只能打开一个ResultSet对象。调用ResultSet的next()方法可以使游标定位到下一条记录。调用ResultSet的getxxx()方法可以取得某个字段的值。
(2)ResultSet既可以通过字段的序号来指定字段,也可以通过字段的名字来指定字段。
例如:
String sql="select id,name,title,price from books where name='tome' and price=40";
ResultSet rs=stmt.executeQuery(sql);
如果要访问id字段,可以用
rs.getString(1); 或者rs.getString("id");
如果要取出ResultSet中所有记录,可以采用下面的循环语句:
while(rs.next()){
String col1=rs.getString(1);
String col2=rs.getString(2);
String col3=ts.getString(3);
float col4=rs.getFloat(4);
}
6.总结介绍JDBC访问数据库的步骤
(1)装载并注册数据库JDBC驱动程序,(其中JDBC-ODBC Driver是在JDK中自带的,默认已经注册,所以不需要再注册)
//装载JdbcOdbcDriver.class(只需要装载,不需要注册)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//装载并注册SQLServerDriver
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
//装载并注册OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//装载并注册MySQLDriver
Class.forName("com.mysql.jdbc.Driver");
java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());//这个注册不上必要的
说明:
对于mysql的驱动程序类com.mysql.jdbc.Driver,在JVM加载这个类时,会执行以下静态代码
static{
try{
java.sql.DriverManager.registerDriver(new Driver());
}catch(){
throw new RuntimeException("..");
}
....
}
所以程序中只要通过Class.forName方法加载mysql driver类即可,可以不需要再注册。
(2)建立与数据库的连接
Connection conn=java.sql.DriverManager.getConnection(url,user,password);
mysql: url="jdbc:mysql://localhost:3306/dbName";
(3)创建Statement对象,准备调用SQL语句
Statement stmt=conn.createStatement();
(4)调用SQL语句:
String sql="select id,name,title,price from books where name='tom' and price=40";
ResultSet rs=stmt.executeQuery(sql);
(5)访问ResultSet中的记录集
(6)一次关闭 ResultSet,Statement和Connection对象:
rs.close();
stmt.close();
conn.close();
7.事务处理
(1)在Connection类中提供了3个控制事物的方法:
setAutoCommit(boolean autoCommit);设置是否自动提交事物
commit();提交事物
rollback();回滚事物
(2)在DJBC API中,默认情况下为自动提交事物。可以通过调用setAutoCommit(false)来禁止提交事物。
try{
con.java.sql.DriverManager.getConnection(dbUrl,user,dbPwd);
//禁止自动提交,设置回滚点
con.setAutoCommit(false);
stmt=con.createStatement();
//数据库更新操作1
stmt.executeUpdate("update account set money=money-1000 where name='zhangsan'");
//数据库更新操作2
stmt.executeUpdate("update account set money=money+1000 where name='lisi'");
//事物提交
con.commit();
}catch(Exception e){
e.printStackTrace();
//操作不成功事物回滚
con.rollback();
}finally{
stmt.close();
con.close();
}
JDBC介绍的更多相关文章
- JDBC(1):JDBC介绍
一,JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC.这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加 ...
- 关于Java(JDBC介绍)
JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的. JDBC 简单功能 连接数据源,如数据库 传给数据库查询和更新指令 获取并处理数据库返回结果(对查询等的响应) 示例代码 ...
- JAVA记录-JDBC介绍
JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 ...
- (一)mybatis之JDBC介绍
前言:为什么在学mybatis之前要先了解JDBC呢?因为mybatis是以ORM模型为中心思想的框架,而所有的ORM模型都是基于JDBC进行封装的,不同的ORM模型对JDBC封装的强度是不一样的. ...
- 【Spring JDBC】spring jdbc 介绍(一)
Spring JDBC模块是Spring框架的基础模块之一.在Spring JDBC模块中,所有的类可以被分到四个单独的包: core 核心包:它包含了JDBC的核心功能.此包内有很多重要的类,包括: ...
- JDBC介绍和Mybatis运行原理及事务处理
本博客内容非自创,转载自以下三位,侵删: https://juejin.im/post/5ab7bd11f265da23906bfbc5 https://my.oschina.net/fifadxj/ ...
- day17-jdbc 2.jdbc介绍
SQL是一种非过程性语言,只能写一条嘛,你写多条不行嘛.每个数据库都有自己的存储过程.你可以做编程,你可以写多条SQL语句把它放到一起.这就是存储过程.然后用的时候一调它就执行这个逻辑结构了.因为多条 ...
- 成都传智播客JDBC视频及讲师介绍
成都传智播客java讲师,也许,你跟他很熟,你或者听过他的课,或者跟他争论过什么,又或者你们在一起共事,再者你们只是偶尔擦肩而过.在小编的印象中郭老师完全没有架子,和他相处会让你觉得不是面对一个老师, ...
- JDBC相关概念介绍
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
随机推荐
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...
- Dropzone.js实现文件拖拽上传
dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 使用Dropzo ...
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- 体验报告:微信小程序在安卓机和苹果机上的区别
很多人可能会问:微信小程序和在微信里面浏览一个网页有什么区别? 首先,小程序的运行是全屏的,界面跟进入了一个APP很像,更为沉浸跟在微信里面访问h5不一样:其次,它的浏览体验更为稳定. 不过,这还不够 ...
- BI分析受阻?FineBI推出SPA螺旋式分析新功能!
过去,企业级的数据分析通常会有这么几种场景,业务部门托信息部门分析数据,结果报表一出,唇枪舌剑争论你我高低,数据不准,指标不对.信息部门欠缺业务概念,业务部门不懂技术逻辑,数据分析之路,暂时搁浅. 后 ...
- Android Studio分类整理res/Layout中的布局文件(创建子目录)
res/layout中的布局文件太杂,没有层次感,受不了的我治好想办法解决这个问题. 前几天看博客说可以使用插件分组,可惜我没找到.知道看到另一篇博客时,才知道这个方法不能用了. 不能用插件,那就手动 ...
- 自定义控件之 圆形 / 圆角 ImageView
一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...
- Linux基础介绍【第一篇】
Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- 豪情-CSS解构系列之-新浪页面解构-01
目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...