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访问数据库的基本步骤。的更多相关文章

  1. 通过JDBC API访问数据库的基本步骤

    1.获取要访问的数据库的JDBC驱动程序的类库文件,把它放到classpath中. 2.在程序中加载并注册JDBC驱动程序.例如,以下代码用于加载并注册MySQL驱动程序: //加载MySQL Dri ...

  2. JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)

    * 感谢DT课堂颜群老师的视频讲解(讲的十分仔细,文末有视频链接) import java.sql.Connection; import java.sql.DriverManager; import ...

  3. C++中使用ODBC API访问数据库例程

    使用ODBC API访问数据库简单流程,供参考使用:  ODBC API 123456789101112131415161718192021222324252627282930313233343536 ...

  4. 2017.11.12 web中JDBC 方式访问数据库的技术

    JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...

  5. JDBC访问数据库的基本步骤是什么?

    1.加载(注册)数据库驱动(到JVM) 2.建立(获取)数据库连接. 3.创建(获取)数据库操作对象. 4.定义操作的SQL语句. 5.执行数据库操作. 6.获取并操作结果集. 7.关闭对象,回收数据 ...

  6. JDBC访问数据库的基本步骤

    加载驱动 通过DriverManager对象获取连接对象Connection 通过连接对象获取会话 通过会话进行数据的增删改查,封装对象 关闭资源

  7. JSP中使用JDBC连接MySQL数据库的详细步骤

    1,首先在自己新建的项目文本框中输入Web Project的名称,然后单击下一步. 2,继续单击下一步 3,把Generate web.xml deployment descriptor复选框勾上. ...

  8. LUA利用第三方API访问数据库

    ===========数据库访问--第三方 http { upstream backend { drizzle_server 192.168.4.119:3306 protocol=mysql dbn ...

  9. Windows下使用ODBC API访问数据库之关键

    本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库. 1.SQL安装和环境配置 这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功. 注意的关键点: SA账号配 ...

随机推荐

  1. Druid + spring 配置数据库连接池

    1. Druid的简介 Druid是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  2. chromedriver.exe下载

    淘宝的镜像地址可以下载: https://npm.taobao.org/mirrors/chromedriver/

  3. ReactNative: Android与iOS平台兼容处理

    方法一: 创建不同的文件扩展名:*.android.js*.io.js 方法二: import { Platform } from 'react-native'; if (Platform.OS == ...

  4. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  5. 解析html,提取元素参数

    r = s.get(loginurl, verify=False) dom = etree.HTML(r.content.decode("utf-8")) try: result[ ...

  6. java 统计字符串中连续重复的字符,并得出新字符串

    题目: 比如输入为aaabbc,输出a3b2c1 完整解答: public class Other { static String func(String str) { StringBuffer re ...

  7. wpf Textbox 回车就换行

    将 TextWrapping 属性设置为 Wrap 会导致输入的文本在到达 TextBox 控件的边缘时换至新行,必要时会自动扩展 TextBox 控件以便为新行留出空间. 将 AcceptsRetu ...

  8. laravel5.8 源码分析(1) Route

    https://learnku.com/docs/laravel/5.8 源码路径 vendor\laravel\framework\src\Illuminate\Routing\Router.php ...

  9. 一、Signalr WebApi客服

    一.搭建环境 (redis服务) 链接测试 二.项目搭建 参考 1.搭建项目(直接项目-不包含MVC以及API) 项目结构 但是需要访问(所以还需要添加控制器Api的模式)选择Api 添加类库一个专门 ...

  10. 如何在 Visual C# 中执行基本的文件 I/O

    演示文件 I/O 操作 本文中的示例讲述基本的文件 I/O 操作.“分步示例”部分说明如何创建一个演示下列六种文件 I/O 操作的示例程序: 注意:如果要直接使用下列示例代码,请注意下列事项: 必须包 ...