java如何创建一个jdbc程序详解

JDBC简介

  • Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。
  • JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。
  • 使用JDBC编写的程序能够自动地将SQL语句传送给相应的数据库管理系统。
  • JDBC扩展了Java的功能,由于Java语言本身的特点,使得JDBC具有简单、健壮、安全、可移植、获取方便等优势。

我们在没有JDBC之前,使用驱动程序在Java程序与MySQL、Oracle、SQLServer等数据库之间建立连接,驱动程序就是在该课程中将要学到的内容。那么就存在一个问题:在同一个Java程序与数据库之间建立连接时,驱动程序是否是共用的呢?如果一样,很显然就能节省代码量,但是实际上是不一样的。一定要注意是不一样的。那么就存在一个问题:当底层数据库发生改变之后,数据库的驱动程序也会随之发生变化,那么该怎么解决该问题呢?于是JDBC出现了,目的是为了减轻开发人员的工作量,以提高代码的复用。

JDBC API

接口/类 功能说明
DriverManager 数据库驱动管理类,用于加载和卸载各种驱动程序,并建立于数据库的连接
Connection 此接口用于连接数据库
Statement 此接口用于执行SQL语句并将数据检索到ResultSet中
ResultSet 结果集接口,提供检索SQL语句返回数据的各种方法
PreparedStatement 此接口用于执行预编译的SQL语句
CallableStatement 此接口用于执行SQL存储过程的语句

JDBC结构

1.JDBC API是Java开发工具包(JDK)的组成部份:

  • JDBC驱动程序管理器
  • JDBC驱动程序测试工具包
  • JDBC-ODBC桥

2.JDBC驱动程序管理器是JDBC体系结构的支柱,其主要作用是把Java应用程序连接到正确的JDBC驱动程序上。

3.JDBC驱动程序测试工具包为JDBC驱动程序的运行提供一定的可信度,只有通过JDBC驱动程序测试包的驱动程序才被认为是符合JDBC标准的。

4.JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。其目标是为方便实现访问某些不常见的DBMS,它的实现为JDBC的快速发展提供了一条途径。

在开始之前,我们先来实现一个简单的JDBC程序

步骤

1,注册驱动;(只需要注册一次)

2,建立连接;

3,创建执行的sql语句;

4,执行语句;

5,处理执行结果;

6,释放资源;

示例

package cn.ccnu; 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet; 

import com.mysql.jdbc.Statement; 

public class Demo1 { 

  public static void main(String[] args) throws Exception {
    test();
  } 

  public static void test() throws Exception {
    //1,注册驱动
//   DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//   System.getProperty("jdbc.driver", "con.mysql.jdbc.Driver");
    Class.forName("com.mysql.jdbc.Driver");//这三种注册方式,推荐使用这种 

    //2,建立连接
    //url格式
    //JDBC:子协议:子名称//主机名:端口/数据库名称
    String url = "jdbc:mysql://localhost:3306/test";//如果是本机,也可以将localhost:3306省掉
    String user = "root";
    String password = "123456";
    Connection conn = (Connection)DriverManager.getConnection(url, user, password); 

    //3,创建slq执行语句
    Statement st = (Statement) conn.createStatement(); 

    //4,执行语句
    ResultSet rs = st.executeQuery("select * from a"); 

    //5,处理执行结果
    while (rs.next()) {
      System.out.println(rs.getObject(1));
    } 

    //6,关闭连接,释放资源
    rs.close();
    st.close();
    conn.close();
  } 

} 

分析JDBC开发步骤

使用JDBC访问数据库的基本步骤一般如下:

  • 加载JDBC驱动程序
  • 创建数据库连接
  • 创建Statement对象
  • 执行SQL语句
  • 处理返回结果
  • 关闭创建的对象

开发第一个JDBC程序

package com.wfu.ch09;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test1 {
 public static void main(String[] args) {
 try {
  Class.forName("com.mysql.jdbc.Driver");//里面的名字一定不要写错,这个也是导入的
  //forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
  Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/k-user","root","123456");//试图建立到给定数据库 URL 的连接。
  Statement stmt=conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。

//  String insertsql="insert into k_user(userno,username,pwd) values('1002','张三','123')";
//  int x=stmt.executeUpdate(insertsql); //executeUpdate 返回一个int 型的数据 括号里面是一个字符串数据类型,详细内容看文档

  //(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数
  //(2) 对于不返回任何内容的 SQL 语句,返回 0

//  if(x>0){
//  System.out.println("插入成功!");
//  }
//  String updateSql="update k_user set pwd='123456' where userno='1002'";
//  int x=stmt.executeUpdate(updateSql);
//  if(x>0){
//  System.out.println("更新成功!");
//  }
  String deleteSql="delete from k_user where userno='1002'";
  int x=stmt.executeUpdate(deleteSql);
  if(x>0){
  System.out.println("删除成功!");
  }
  String sql="select * from k_user";
  ResultSet rs=stmt.executeQuery(sql);
  while(rs.next()){
  for(int i=1;i<=13;i++){
   System.out.print(rs.getString(i)+" ");
  }
  System.out.println();
  }
  rs.close();
  stmt.close();
  conn.close();
 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
}
package com.wfu.ch09;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test2 {
 public static void main(String[] args) {
 try {
  // step1:加载JDBC驱动程序
  Class.forName("com.mysql.jdbc.Driver");
  // step2:建立数据库的连接
  Connection conn = DriverManager.getConnection(
   "jdbc:mysql://localhost:3306/stock11", "root", "123");
//  // step3:创建Statement对象
  Statement st = conn.createStatement();
  //step4:执行SQL语句
  String selectSql="select * from k_user";
  //step5:处理结果集
  ResultSet rs=st.executeQuery(selectSql);
  while(rs.next()){
  for(int i=1;i<=13;i++){
   System.out.print(rs.getString(i)+" ");
  }
  System.out.println();
//  String x=rs.getString("hometown");
//  System.out.println(x);
  }
  //step6:关闭创建的对象
  //关闭结果集
  rs.close();
  //关闭statement对象
  st.close();
  //关闭连接
  conn.close();

  // step4: 执行SQL语句
////  String insertSql = "insert into k_user(userno,username,pwd) values('1001','tom','123')";
//  int x = st.executeUpdate(insertSql);
//  if(x>0){
//  System.out.println("插入成功!");
//  }
//  String updateSql="update k_user set pwd='123456' where userno='1001'";
//  int x=st.executeUpdate(updateSql);
//  if(x>0){
//  System.out.println("更新成功!");
//  }
//  String deleteSql="delete from k_user where userno='1001'";
//  int x=st.executeUpdate(deleteSql);
//  if(x>0){
//  System.out.println("删除成功!");
//  }
  //

 } catch (ClassNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

}

各个语句说明

加载JDBC驱动程序

加载驱动程序的方法:

Class.forName("DriverName")

其中DriverName是要加载的JDBC驱动程序名称。驱动程序名称根据数据库厂商提供的JDBC驱动程序的种类来确定。

加载MySQL数据库驱动程序的方法为:

Class.forName("com.mysql.jdbc.Driver");

加载Oracle数据库驱动程序的方法为:

创建数据库连接-1

DriverManager类是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。

DriverManager的常用方法:

方法名 功能说明
Static connection getConnection(String url, String user, String password) 用于建立到指定数据库 URL 的连接。其中url为 提供了一种标识数据库位置的方法,user为用户名,password为密码
static Driver getDriver(String url) 用于返回能够打开url所指定的数据库的驱动程序

使用DriverManager类的getConnection()创建一个数据库连接:

Connection conn = DriverManager.getConnection(String url,String user,String password);

创建数据库连接-2

URL提供了一种标识数据库位置的方法,可以使相应的驱动程序能够识别该数据库并与它建立连接。

JDBC URL由三个部分组成:

jdbc : < subprotocol> : < subname>

可以根据子协议的改变而变化。

是子协议,指数据库连接的方式。

创建数据库连接-3

对于MySQL驱动的连结的URL是:

jdbc:mysql://serverName:port/instance
  • mysql为子协议名称
  • serverName为MySQL数据库服务器名称,可以是一个域名,也可以是IP地址
  • port为MySQL数据库的端口号,默认为3306
  • instance是数据库的实例名

示例:

Connection conn = DriverManager.getConnection(
  "jdbc:mysql://localhost:3306/haier", "root", "123");

创建SQL 语句

创建完连接之后,可以通过此连接向目标数据库发送SQL语句。在发送SQL语句之前,须创建一个Statement类的对象,该对象负责将SQL语句发送给数据库。如果SQL语句运行后产生结果集,Statement对象会将结果集封装成ResultSet对象并返回。

通过调用Connection接口的createStatement方法来创建Statement对象,如:

Statement smt = conn.createStatement();

执行SQL语句

在Statement接口中有两个非常重要的方法,分别是executeUpdate方法和executeQuery方法。使用executeUpdate方法可以执行插入、修改和删除等操作的SQL语句, executeUpdate方法的返回值是一个int类型数值,表示更新数据表的行数。使用 executeQuery方法可以执行数据库查询操作的SQL语句,他的返回值是实现ResultSet接口的对象,在其中保存从数据库中查询出来的数据。

例如:

int row=stmt.executeUpdate(sql);

写到这,对于sql命令的展开没有进行详细的说明,在上面的例子中的代码中有很多注释,都有了详细的说明,对于如何写一个jdbc 程序也有了步骤说明,而且都是一个接着一个的,包括声明的对象类型,还有一个注意的地方就是在最后关闭程序的时候,也是有顺序的,对于有依赖关系的语句都是依次关闭的,在程序的代码中也是有说明的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • java使用JDBC动态创建数据表及SQL预处理的方法

    本文实例讲述了java使用JDBC动态创建数据表及SQL预处理的方法.分享给大家供大家参考,具体如下: 这两天由于公司的需求,客户需要自定义数据表的字段,导致每张表的字段都不是固定的而且很难有一个通用的模板去维护,所以就使用JDBC动态去创建数据表,然后通过表的字段动态添加数据,数据的来源主要是用户提供的Excel直接导入到数据库中. 如果考虑到字段的类型,可以通过反射的机制去获取,现在主要用户需求就是将数据导入到数据库提供查询功能,不能修改,所以就直接都使用String类型来处理数据更加便捷.

  • java实现jdbc批量插入数据

    首先介绍三种JDBC批量插入编程方法,进行比较,具体内容如下 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一:使用PreparedStatement加批量的方法 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, pass

  • Java使用JDBC连接数据库的实现方法

    本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧.分享给大家供大家参考.具体如下: JDBC(Java Data Base Connectivity)数据库连接,通常我们在编写web应用或java应用程序要连接数据库时就要使用JDBC.使用JDBC连接数据库一般步骤有: 1.加载驱动程序 Class.forName(driver); 2.创建连接对象 Connection con = DriverManager.getConnection(ur

  • Java编程中使用JDBC API连接数据库和创建程序的方法

    JDBC连接数据库 涉及到建立一个JDBC连接的编程是相当简单的.下面是这些简单的四个步骤: 导入JDBC包: 添加import语句到Java程序导入所需的类在Java代码中. 注册JDBC驱动程序:这一步会导致JVM加载所需的驱动程序实现到内存中,因此它可以实现JDBC请求. 数据库URL制定:这是创建格式正确的地址指向到要连接的数据库. 创建连接对象:最后,代码调用DriverManager对象的getConnection()方法来建立实际的数据库连接. 导入JDBC包: import 语句

  • java的jdbc简单封装方法

    学习了jdbc一段时间后感觉自己写一个简单的封装来试试,于是参考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 <span style="font-size:18px;">MysqlDriver=com.mysql.jdbc.Driver MysqlURL=jdbc\:mysql\://localhost\:3306/one User=root Pwd=123456 </span>

  • Java加载JDBC驱动程序实例详解

    本文实例说明了Java加载JDBC驱动程序的方法,运行本文实例代码后,如果连接成功就会显示如下一条语句:sun.jdbc.odbc.JdbcOdbcDriver@6ec12,如果连接不成功,则显示加载数据库驱动程序出现异常. Java加载JDBC的实现方法: 通过调用Class.forName()方法可以显式地加载一个驱动程序.该方法的入口参数为要加载的驱动程序.例如:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")语句加载了SUN 公司开发的

  • 基于Java回顾之JDBC的使用详解

    尽管在实际开发过程中,我们一般使用ORM框架来代替传统的JDBC,例如Hibernate或者iBatis,但JDBC是Java用来实现数据访问的基础,掌握它对于我们理解Java的数据操作流程很有帮助. JDBC的全称是Java Database Connectivity. JDBC对数据库进行操作的流程:•连接数据库•发送数据请求,即传统的CRUD指令•返回操作结果集JDBC中常用的对象包括:•ConnectionManager•Connection•Statement•CallableStat

  • java如何创建一个jdbc程序详解

    JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序. 使用JDBC编写的程序能够自动地将SQL语句传送给相应的数据库管理系统. JDBC扩展了Java的功能,由于Java语言本身的特点,使得JDBC具有简单.健壮.安全.可移植.获取方便等优势. 我们在没有JD

  • java多线程创建及线程安全详解

    什么是线程 线程被称为轻量级进程,是程序执行的最小单位,它是指在程序执行过程中,能够执行代码的一个执行单位.每个程序程序都至少有一个线程,也即是程序本身. 线程的状态 新建(New):创建后尚未启动的线程处于这种状态 运行(Runable):Runable包括了操作系统线程状态的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间. 等待(Wating):处于这种状态的线程不会被分配CPU执行时间.等待状态又分为无限期等待和有限期等待,处于无

  • 实现一个基于Servlet的hello world程序详解步骤

    目录 一. 引入相关jar包 二. 编写java代码 1. 创建一个类 2. 删除super方法 3. 构造相关字符串 4. 将类和HTTP特定请求相关联 三. 创建一些必要的目录和文件 四. 打包程序 五. 部署程序 六. 验证程序是否正常工作 一. 引入相关jar包 首先,我们先在idea里创建出一个Maven项目出来,除了路径要填成自己的希望路径以外,其他都可以一路next和finish 创建好后,我们需要在pom.xml中加上一组<dependencies>标签,在标签里引入servl

  • Java+swing实现抖音上的表白程序详解

    目录 1.准备工作 2.界面窗体的设计与实现 3.对按钮加上监听事件 4.设置滚按钮的层级为最上面 5.为界面添加一首背景音乐 6.源代码 带你手把手,用 java swing实现抖音上的表白程序 1.准备工作 a.需要下载一个带着swing插件的eclipse b.需要配置好JDK c.创建一个JFrame的项目(如下图所示的步骤) d.把资源文件放入与src所在的那个目录 步骤如下: 1.先复制资源文件 2.粘贴文件 3.把jar文件放入Referenced Libraries文件夹下 ​

  • Java创建内部类对象实例详解

    Java创建内部类对象实例详解 要想使用new生成一个内部类的实例,需要先指向一个外部类的实例,也就是先生成外部类的实例, 因为内部类可以调用外部类的成员,当没有外部类实例的时候也就没有这些成员的内存空间,内部类在实例化的时候,调用外部类的成员就会出错,所以需要使用外部类的实例 + 点 + new 的方式实例化一个新的内部类 class TestInner{ public static void main(String [] args) { Outer outer = new Outer();

  • 使用maven创建普通项目命令行程序详解

    目录 引言 下载并配置Maven maven项目的构建 通过Maven配置mysql.myBtais.myBtais-plus maven命令工具 引言 maven是一个软件项目管理工具,其核心是基于项目对象模型(POM project object model),即就是通过对其生成的pom.xml进行配置来管理项目的构建,报告和文档的.其功能包括两部分,一是对项目依赖jar包的管理,二是提供项目的构建.打包.测试等命令 下载并配置Maven 参考地址:百度 maven项目的构建 打开idea,

  • Android快速实现一个财务APP程序详解

    目录 前言 一,系统的技术栈 二,系统界面 三,系统核心代码 前言 昨天有个粉丝朋友也想学开发Web和小程序.安卓,问可以在大学学会吗? 在学校学到的东西真的有限: 在很多的高校,有一些教授是学院派的,他们没有做过多少开发工作,上课就是照本宣科,讲的知识点都是陈年落伍的技术,更别说带学生做项目了. 现在的很多硕博学生帮老师做课件,然后老师上课一顿读. 当然有的老师开发能力也是很强的,他们有开发经验,可以更加全面地理解技术知识点,然后传递给学生,也能拿到一些科研项目,然后带学生实战. 但是,但是,

  • Java数据库连接_jdbc-odbc桥连接方式(详解)

    jdbc-odbc桥连接方式操作数据库SU(Course) 步骤: 1.配置数据源 控制面板下搜索管理工具->ODBC数据源(32位)->添加->选择sql server(填写名称mytest,服务器local或者.)->下一步->更改默认的数据库为SU->下一步->测试数据源至成功 用户数据源会多一条mytest,至此配置数据源成功. 2.在程序中连接数据源 打开eclipse,编写程序. public class Demo_1 { public static

  • Java安全框架——Shiro的使用详解(附springboot整合Shiro的demo)

    Shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理 三个核心组件:Subject, SecurityManager 和 Realms Subject代表了当前用户的安全操作 SecurityManager管理所有用户的安全操作,是Shiro框架的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务. Realm充当了Shiro与应用安全数据间的"桥梁"或者"连接器&q

  • MySQL数据库JDBC编程详解流程

    目录 一.数据库编程的必备条件 二.Java的数据库编程:JDBC 三.JDBC工作原理 四.JDBC开发步骤 五.JDBC操作步骤 六.优化JDBC的部分代码 1.获取数据库连接对象 2.操作命令对象Statement 3.ResultSet对象 4.总结 一.数据库编程的必备条件 编程语言: 如Java.C++.C.Python等 数据库: 如Oracle.MySQL.SQL Server等 数据库驱动包: 不同的数据库,要使用编程语言来操作时,就需要使用该数据库厂商提供的数据库驱动包. 如

随机推荐