JDBC API访问数据库的基本步骤。
JDBC本质:官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这个接口,提供数据库驱动jar包。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
任何一个Java应用程序使用JDBC API访问数据库,其基本工作可以分为5个步骤:
(1)加载JDBC驱动程序;
(2)建立数据库连接;
(3)创建操作数据库SQL的Statement、PreparedStatement或CallableStatement对象;
(4)执行语句并分析执行结果;
(5)关闭连接。
1、加载JDBC驱动程序
利用Class类的方法forName(String driverName)加载JDBC驱动,不同的数据库的JDBC驱动名称不同,MySql的驱动类名为com.mysql.jdbc.Driver。
Class forName("com.mysql.jdbc.Driver"); //注意:
//在Java Web应用开发中,如果要访问数据库,首先应将加载数据库的JDBC驱动程序(jar包)复制到Web应用程序的WEB-INF\lib 目录下,这样Web应用程序才能正常地通过JDBC接口访问数据库。
2、建立数据库的连接
利用DriverManager类的方法getConnection()获得与特定数据库的连接实例(Connection实例)。例如创建一个连接的本地MySQL数据库userdb Connection对象,假设该数据库的用户名为root、密码为passwd,代码如下:
//第一种方式:
String url = "jdbc:mysql://localhost:3306/userdb?user = root & password = passwd";
Connection con = DriverManager.getConnection(url);
//第二种方式:
private static final String url = "jdbc:mysql://localhost:3306/userdb";
private static final String user = "root";
private static final String password = "111111";
protected static Connection con = null;
con = DriverManager.getConnection(url , user , password);
3、进行数据库操作
对数据库的操作依赖于SQL语句,JDBC依据SQL语句的类型不同提供了三种执行SQL的对象,即Statement,PreparedStatement和CallableStatement。
1)Statement对象执行静态SQL语句
Statement对象用于执行不含参数的静态SQL语句,JDBC利用Connection实例的createStatement()方法创建一个Statement实例,通过Statement实例的execute()方法(不常用)、executeQuerry()方法(select)或者executeUpdate()方法(insert、update或 delete)等执行SQL语句。例如查询数据 表tb_users中的所有记录:
//创建Statement对象,其中con为Connection对象
Statement statement = con.createStatement();
//使用executeQuery()方法执行SELECT语句,该方法的返回值为ResultSet类型
ResultSet rs = statement.executeQuerry(select*fron tb_users);
再如,删除数据表tb_users中的fd_username 为Allen的记录:
//创建Statement对象,其中con为Connection对象
Statement statement = con.createStatement();
//使用executeUpdate()方法执行INSERT、UPDATE、DELETE等SQL语句,返回 int 类型
int result = 0;
result = statement.executeUpdate("delete from tb_users where fd_username = 'Allen' ");
2)PreparedStatement 执行动态SQL语句
PreparedStatement用于执行含有动态的SQL语句,动态SQL语句是指在程序运行时能动态地为SQL语句的参数赋值,增加了程序的灵活性。PreparedStatement 对象由Connection 实例的 preparedStatement(String sql)方法构建。
PreparedStatement 接口也有executeQuery()和executeUpdate()方法,但这两个方法都不带参数。该接口提供了setXxx(int paramIndex , xxx var)方法为动态的SQL语句中的参数赋值。这里仍以上面的SQL操作为例说明PreparedStatement 对象 的创建和相关方法的使用。
// 声明动态SQL ,参数使用?占位符表示
String sqlSelect = "select * from tb_users where fd_username = ?";
//创建PreparedStatement 对象psQuery,其中con为Connection对象
PreparedStatement PSQuery = con. preparedStatement(sqlSelect);
/*为动态SQL语句中的参数赋值,由于fd_username为Sting类型,故使用setString()方法为参数赋值,1代表动态SQL语句中的第一个问题(第一个问号处值)*/
psQuery.setString(1,"Allen");
String sqlDelete = "delete from tb_users where fd_username = ?";
//创建PreparedStatement 对象 psUpdate ,其中con为Connection对象
PreparedStatement psUpdate = con.preparedStatement(sqlDelete);
//使用executeUpdate()方法执行INSERT、UPDATE、DELETE等SQL语句,这里列举的是 删除
ResultSet result = psUpdate.executeUpdate();
4、对执行结果进行分析处理
1)分析查询结果集 ResultSet
在执行SELECT语句后必然产生一个ResultSet结果集实例,对结果集进行分析与处理是应用程序的最终目标,可以使用循环遍历结果集中的每一行记录,使用getXxx()方法获取遍历记录行指定列的数据。
//查询tb_users表中记录的用户名和性别
ResultSet rs = statement.executeQuerry("select fd_username , fd_gender from tb_users");
//使用next() 方法判断结果集是否有下一行,从而遍历结果集中的所有记录行
while(rs.next()){
//获取遍历记录行中列名fd_username的对应值
String username = rs.getString("fd_username");
//获取遍历记录行中第二列的对应值
String gender = rs.getString(2);
System.out.println("用户名:"+ username + ",性别:"+ gender);
2)分析执行结果
对于INSERT、UPDATE、DELETE甚至是SQL DLL语句,一般由executeUpdate()方法执行且返回值为int 类型,表示受影响的记录行数,如返回值大于0表示该SQL语句成功执行。
int result = 0;
String sql = "delete from tb_users where fd_username = 'Allen' ";
// execteUpdate()方法执行INSERT、UPDATE、DELETE等SQL语句,返回int类型
result = statement.executeUpdate(sql);
//分析执行结果
if(result > 0){
System.out.println("删除成功!");
else
System.out.println("删除失败!");
5、关闭JDBC相关对象
应用程序在对数据库操作完成以后,要把使用的所有JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序正好相反。
(1)关闭结果集ResultSet 对象;
(2)关闭Statement、PreparedStatement对象;
(3)关闭连接对象
//关闭结果集rs
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭Statement对象statement
if (statement!= null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭连接对象 con
if (con!= null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Java应用程序用过JDBC操作5个基本步骤。首先加载JDBC驱动,使用DriverManage对象创建Connection实例与制定的数据库建立连接;
然后使用Connection实例的createStatement()方法创建Statement实例(也可以创建PreparedStatement和CallableStatement对象),
并利用Statement实例的executeQuery()方法执行INSERT、UPDATE、DELETE等语句,并通过分析与处理执行结果实现应用程序的具体功能,
最后务必关闭与数据库之间的连接。
JDBC API访问数据库的基本步骤。的更多相关文章
- 通过JDBC API访问数据库的基本步骤
1.获取要访问的数据库的JDBC驱动程序的类库文件,把它放到classpath中. 2.在程序中加载并注册JDBC驱动程序.例如,以下代码用于加载并注册MySQL驱动程序: //加载MySQL Dri ...
- JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)
* 感谢DT课堂颜群老师的视频讲解(讲的十分仔细,文末有视频链接) import java.sql.Connection; import java.sql.DriverManager; import ...
- C++中使用ODBC API访问数据库例程
使用ODBC API访问数据库简单流程,供参考使用: ODBC API 123456789101112131415161718192021222324252627282930313233343536 ...
- 2017.11.12 web中JDBC 方式访问数据库的技术
JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...
- JDBC访问数据库的基本步骤是什么?
1.加载(注册)数据库驱动(到JVM) 2.建立(获取)数据库连接. 3.创建(获取)数据库操作对象. 4.定义操作的SQL语句. 5.执行数据库操作. 6.获取并操作结果集. 7.关闭对象,回收数据 ...
- JDBC访问数据库的基本步骤
加载驱动 通过DriverManager对象获取连接对象Connection 通过连接对象获取会话 通过会话进行数据的增删改查,封装对象 关闭资源
- JSP中使用JDBC连接MySQL数据库的详细步骤
1,首先在自己新建的项目文本框中输入Web Project的名称,然后单击下一步. 2,继续单击下一步 3,把Generate web.xml deployment descriptor复选框勾上. ...
- LUA利用第三方API访问数据库
===========数据库访问--第三方 http { upstream backend { drizzle_server 192.168.4.119:3306 protocol=mysql dbn ...
- Windows下使用ODBC API访问数据库之关键
本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库. 1.SQL安装和环境配置 这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功. 注意的关键点: SA账号配 ...
随机推荐
- go语言中os/signal包的学习与使用
package main; import ( "os" "os/signal" "fmt" ) //signal包中提供了两个函数 //No ...
- 32、出任爬虫公司CEO(爬取职友网招聘信息)
职友集,搜索到全国上百家招聘网站的最新职位. https://www.jobui.com/rank/company/ 打开网址后,你会发现:这是职友集网站的地区企业排行榜,里面含有 本 ...
- wex5 如何利用 百度地图 定位 和 天气插件
引包: require("cordova!cordova-plugin-geolocation"); require("cordova!com.justep.cordov ...
- mybatis映射文件mapper详解
mapper.xml映射文件主要是用来编写sql语句的,以及一些结果集的映射关系的编写,还有就是缓存的一些配置等等. 1.<select>元素 <select>元素就是sql查 ...
- ES各种操作的过程
参考:https://blog.csdn.net/better_xf/article/details/81188050 一.es写入数据的过程 客户端选择一个node发送请求过去,这个node就是co ...
- MWPhotoBrowser.bundle: bundle format unrecognized, invalid, or unsuitable
今天在github下载了MWPhotoBrowser的demo想跑一下,却发现报了MWPhotoBrowser.bundle: bundle format unrecognized, invalid, ...
- Linux学习--第十天--bash脚本、用户自定义变量、环境变量、位置参数变量、预定义变量、标准输入输出、wc、history、dd、PS1
shell简介 分为两种c shell 和b shell b shell:sh.ksh.Bash.psh.zsh: (Bash和sh兼容,linux基本shell是Bash) c shell:csh. ...
- Linux下网络设置
1.临时IP配置 # ifconfig eth0 192.168.110.118 netmask 255.255.255.0 gateway 192.168.110.2 up # ...
- python + excel 使用
为了提高工作效率(偷懒),用python去解决. 工作需要,需要将excel文件转化为csv文件,要是手工的一个个去转换,每个sheet页不但有几十个字段,中间还夹杂着空格,然后按顺序转换成csv文件 ...
- Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities(贪心)
E. Byteland, Berland and Disputed Cities time limit per test2 seconds memory limit per test256 megab ...