写点什么

Java 高手速成│编写你第一个数据库程序

作者:TiAmo
  • 2022-12-28
    江苏
  • 本文字数:4377 字

    阅读完需:约 14 分钟

Java高手速成│编写你第一个数据库程序

数据库编程是 Java 应用软件开发中不可或缺的组成部分。Java 提供的 JDBC(Java Database Connectivity)使得软件编程人员在数据库编程中如鱼得水,真正实现操作平台独立以及供应商独立的目标。

01、揭秘 JDBC

JDBC 是 Java 数据库编程的总称,是 JDK 重要组成部分,指的是 java.sql 包中提供的所有支持数据库编程的 API 类。当然,数据库是 JDBC 的必要组成部分。由于现在流行的数据库都提供与 Java 程序连接的驱动软件,因此,在 JDK9 以及新版本的 Java SE 中不再提供数据库(除 JDK6 到 JDK 8 包括小型数据库 Derby 外)。在 JDBC 编程中,软件开发人员必须具有数据库访问的等级和能力(如可以读写、删除、更新、创建数据库等),或者为了方便编程和测试,在本地计算机上安装自己管理和控制的数据库。

JDBC 包括更高一层的含义,它提供对第三方数据库提供商,在编写驱动软件时遵循的协议和规范。JDBC 通过驱动软件 drivers,或称 Connectors,与数据库通讯和交流。JDBC 驱动软件用来翻译 Java 程序中对数据库访问的代码,使之成为这个数据库的语言;另一方面,当数据库将数据或信息传送给 Java 程序时,这个驱动软件又将其翻译为 Java 语言的代码和数据。

Java 提供的驱动软件称为 JDBC/ODBC 桥(JDBC/Open Database Connectivity Bridge)。ODBC 最初是由微软公司提供的数据库编程协议模式,现在越来越多的数据库提供商使用以 JDBC 基础的驱动软件,或者称 Connectors。

当前流行的所有数据库提供商,例如 IBM 的 DB2、甲骨文的 Oracle、微软的 SQL Server、MySQL 等等,都在不断更新他们所提供的 JDBC 驱动软件。值得一提的是,大多数驱动软件都用 Java 语言编写,提高了代码的独立性,实现了 Java“write once, run everywhere”的目标。

图 1 解释了 JDBC 编程的基本概念和结构。


▍图 1 JDBC 数据库编程基本结构

从图 1 中可以看出,一个具有数据库编程的 Java 应用程序通过 JDBC API 类与 JDBC 驱动软件管理通讯。这些 JDBC 管理程序则调用具体的驱动软件,例如 JDBC-ODBC 桥,或 ODBC 驱动软件,用来连接微软或 Java 以外的数据库,以及第三方数据库供应商提供的 JDBC 驱动软件与数据库通讯。

根据数据库的不同,有些 JDBC 驱动软件必须安装在用户端计算机,而有些则要求安装在数据库服务器中。在 JDBC 编程中,软件开发人员需要了解具体数据库对 JDBC 驱动软件的要求。由于数据库经常由专门的部门和专职人员管理,软件工程师则需要咨询和向数据库管理部门提出 JDBC 驱动软件的安装、配置以及测试请求。

我们选择 MySQL 数据库作为 JDBC 编程。其好处如下:


  • MySQL 可以免费下载。

  • MySQL 和其 JDBC 驱动软件易于在本地计算机上安装、配置和调试。读者朋友可以控制和管理,便于学习。

  • MySQL 是当前最流行的数据库之一。越来越多的应用软件利用 MySQL 作为数据库。

02、数据库安装

与其他应用软件的安装一样,双击下载后的 MySQL 安装文件(通常储存在 Downloads 文件夹),并遵循安装对话窗口的提示,一般情况下点击 Next 即可。以 MySQL8 为例,提醒你安装时应该注意如下几点:

1.为学习数据库编程目的,安装 MySQL 服务器即可。

2.保存好更新创建的密码。

3.MySQL 利用预设的网络端口 3306,并将安装的软件储存到你计算机如下目录中:

C:\Program Files\MySQL\MySQL Server 8.0\

建议一般情况下不改变这个设置。

4.当安装完毕,MySQL 将自动启动服务器,并在你计算机中创建一个名为:

MySQL Command Line Client

的链接,用来进行输入 MySQL 指令,进行测试和访问 MySQL 等功能,如图 2 所示。


▍图 2 使用 MySQL 预设的网络端口为 3306

03、数据库运行测试

祝贺你成功安装了 MySQL!下面首先介绍如何测试 MySQL 服务器以及 MySQL 的基本操作指令。我们将在下篇逐步介绍在 Eclipse 中设置和测试 MySQL 的 JDBC 驱动软件以及 Java 代码与 MySQL 服务器的连接,为 JDBC 数据库编程做好准备。

你可以输入如下 MySQL 基本操作指令进行数据库的运行测试:

在计算机中找到并按下 MySQL Server Command Line Client 链接

在服务器显示的窗口输入你在安装时建立的密码:


▍图 3 在连接 MySQL 服务器时输入密码

输入如下指令创建一个数据库:

CREATE DATABASE MyDatabase;

MySQL 将显示:

Query OK. 1 row affected. (0.04 sec.)

输入如下指令使用这个数据库:

use mydatabase;

这时 MySQL 将显示:

Database changed

表示目前使用 MyDatabase。

输入如下指令创建一个名为 Example 的数据表:

create table example (id int, name varchar(40));

输入如下指令将一个记录加入以上数据表:

insert into example values (328890, 'Wang Lin ');

输入如下指令显示 example 中对记录字段的定义:

desc example;

输入如下指令选择表中的所有记录:

Select * from example;

图 4 记录了以上所有执行过程。


▍图 4 DESC 指令显示数据表中的信息

输入如下指令退出 MySQL 服务器:

\q

注意 更多 MySQL 指令和操作可参考有关 MySQL 书籍。本书只介绍有关 JDBC MySQL 编程的基本操作。

04、下载 JDBC 驱动软件

成功下载、安装、测试数据库软件后,离利用 Eclipse 进行数控编程只有一两步之遥了,继续加油!首先下载 JDBC 驱动软件。MySQL 称这个软件为 JDBC Connector,或 Connector /J。这个驱动软件可在 MySQL 的如下网址下载:

https://dev.mysql.com/doc/

安装步骤

1. 下拉到这个网页的尾端,找到 Connector/J,按下与你安装数据库版本相同的连接器,如 Connector/J8.0

2. 按下 Connect/J Installation

3. 按下 Installing Connector/J from a Binary Distribution

这个驱动软件将以压缩文件下载到你的下载文件夹。如:

mysql-connector-java-8.0.13

对此文件解压后,可以看到一个名为:

mysql-connector-java-8.0.13.jar

的文件。这就是你需要的在 Eclipse 中连接数据库的驱动软件。

05、一步步教会你 Eclipse 连接数据库

在 Eclipse 中连接数据库的步骤:

如下是在 Eclipse 中连接数据库的步骤:

1.在 Eclipse 中创建进行数据库编程的项目,为测试目的,你可先创建一个试验项目,如:MySQLTest

找到下载和解压的 JDBC 驱动软件,如:mysql-connector-java-8.0.13.jar,将它拷贝到 MySQLTest 项目中。

2.选择这个驱动软件->单击鼠标右键->在打开的选项窗口选择 Build Path->再选 Configuring Build Path…

3.在打开的窗口选择 Libraries->Classpath->Add Jars,如图 5 所示:


▍图 5 在 Eclipse 的项目中加入驱动软件并建立执行路径

4.在打开的窗口双击项目名称,如 MySQLTest->选择驱动软件->按下 OK->按下 Applyand Close,完成连接设置。如图 6 所示。


▍图 6 在执行路径中加入驱动软件

06、一个实例搞懂 JDBC 是否连接成功

现在你可编写一个测试是否与 MySQL 连接成功的简单程序:

 import java.sql.*; //支持数据库编程的包public class JDBCMysqlTest { public static void main (String args[]) {     Connection connection;try{            Class.forName("com.mysql.cj.jdbc.Driver"); //装入JDBC驱动软件            String dbURL = "jdbc:cj.mysql://localhost:3306"; //数据库本机连接端口            connection = DriverManager.getConnection( //调用连接数据库方法            dbURL, "root", "******"); //指定数据库、用户名,以及 //安装MySQL时建立的密码            System.out.println("connection is succeeded..."); //如果连接成功,打印信息            System.out.println("dbURL:" + dbURL);            System.out.println("Connection: " + connection);        }        catch(ClassNotFoundException e){ //异常处理            System.out.println("Database driver not found.");        }catch(SQLException e){            System.out.println("Error opening the db connection: " +e.getMessage());     }    }}
复制代码

如果 Java 与数据库的连接成功,将在 Eclipse 输出窗口打印如下信息:

connection is succeeded...dbURL:jdbc:mysql://localhost:3306Connection: com.mysql.cj.jdbc.ConnectionImpl@3bd82cf5
复制代码

我们将在下面的小节中详细讨论 Java 数据库编程语句以及 JDBC 数据库编程的技术。

07、编写你第一个数据库程序

如下程序演示数据库编程的基本操作:

连接 MySQL。

创建名为 ProductDB 的数据库。

创建名为 Products 的数据表。

在数据表中加入记录。

从数据表中选择记录。

打印选择的记录。

假设 Products 具有如下字段:

Code VAR(4)Title VARCHAR(40)Price DECIMAL(10, 2)
复制代码

如下是这个程序的代码:

 import java.sql.*;public class JDBCMysqlTest2 { public static void main (String args[]) {     Connection connection;try{            Class.forName("com.mysql.cj.jdbc.Driver");            String dbURL = "jdbc:mysql://localhost:3306";            String username = "root";       String password = "******"; //安装MySQL时建立的密码            connection = DriverManager.getConnection(                dbURL, username, "");            Statement stmt = connection.createStatement();    stmt.executeUpdate("create database ProductDB"); //创建数据库       stmt.executeUpdate("use ProductDB"); //使用指定数据库       //创建数据表       stmt.executeUpdate("CREATE TABLE Products(Code CHAR(4), Title              VARCHAR(40), Price DECIMAL(10, 2))");    stmt.executeUpdate("INSERT INTO Products VALUES ( //加入记录 '1100','Art in Java programming', 89.05)");    stmt.executeUpdate("INSERT INTO Products VALUES (              '2200', 'Computer Color Printer', 1017.96)");        ResultSet rs = stmt.executeQuery("SELECT * FROM Products"); //选择记录        while (rs.next()) { //得到记录        String code = rs.getString("Code");        String title = rs.getString("Title");        double price = rs.getDouble("Price");        System.out.println("Code: " + code + " Title: " + title +Price: "+ price + "\n");      }    stmt.close();        }catch(ClassNotFoundException e){            System.out.println("Database driver not found.");        }catch(SQLException e){            System.out.println("Error opening the db connection: " +e.getMessage());    }    }}
复制代码

程序运行后打印如下结果:

Code: 1100 Title: Art in Java programming Price: 89.05

Code: 2200 Title: Computer Color Printer Price: 1017.96
复制代码

代码中:

create database databaseName
复制代码

以及

use databaseName
复制代码

为 MySQL 创建数据库和使用数据库的指令。

值得注意的是如果你创建的数据库已经存在,则不可以再重复创建这个数据库的语句,否则将产生运行错误。在这种情况下,可删除创建数据库的语句:

stmt.executeUpdate("create database ProductDB"); //如果数据库已经存在,删除这个语句
复制代码

并将 dbURL 的内容修改为连接到已存在数据库:

String dbURL = "jdbc:mysql://localhost:3306/ProductDB";
复制代码


发布于: 2022-12-28阅读数: 37
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者;阿里云创作者社区专家博主、技术博主、星级博主;华为云享专家;

评论

发布
暂无评论
Java高手速成│编写你第一个数据库程序_JDBC_TiAmo_InfoQ写作社区