JDBC 入门(三)

平面设计 2025-04-24 23:24www.168986.cn平面设计培训

在繁忙的数据库世界中,我们创建了一张名为COFFEES的表,用以记录咖啡店所售咖啡的详细信息。这张表就像一本生动的咖啡日志,记录着每一种咖啡的名字、价格,以及本周和至今的销售数量。

让我们深入了解一下COFFEES表的结构。咖啡的名字被储存在COF_NAME这一列中,其数据类型为VARCHAR,允许的最大长度为32个字符。每一种咖啡都有自己独特的名字,这些名字作为主键,唯一地标识了每一种咖啡。

接下来是SUP_ID列,它存储了咖啡供应商的标识,类型为INTEGER。价格则被保存在PRICE列中,由于需要存储带小数的十进制数,所以这里我们选择了FLOAT类型。至于本周的销售数量,则储存在类型为INTEGER的SALES列中。而TOTAL列也同样是INTEGER类型,记录着每种咖啡至今的总销售数量。

我们还有一张SUPPLIERS表,其中包含了每个供应商的信息。这张表以SUP_ID作为主键,唯一地标识每个供应商。有趣的是,COFFEES表中的SUP_ID列是SUPPLIERS表的外键。这意味着我们可以通过SELECT语句从这两张表中获取相关信息。

在创建COFFEES表的SQL语句中,我们看到了SQL语句的格式化要求。CREATE TABLE语句中的关键字使用大写字母,每个项目独占一行,旨在提高可读性。值得注意的是,SQL标准并不区分关键词的大小写。某些特定部分如引号内的内容却是大小写敏感的。例如,在查询名字为"Washington"的语句中,"W"必须大写,而其余字符必须小写。

让我们回顾一下创建COFFEES表的SQL语句:

```sql

CREATE TABLE COFFEES (

COF_NAME VARCHAR(32),

SUP_ID INTEGER,

PRICE FLOAT,

SALES INTEGER,

TOTAL INTEGER

);

```

这个语句简洁明了地定义了COFFEES表的结构。现在,我们已经准备好了开始使用这张表进行各种查询和操作,无论是查找特定咖啡的信息,还是分析销售数据,都将变得轻而易举。对于数据库中的标识,不同的数据库管理系统(DBMS)确实有不同的规定。有的DBMs要求创建时列名和表名必须一致,有的则没有这样的限制。出于安全考虑,我们采用全部使用大写标识的方法,如COFFEES和SUPPLIERS,这是我们在定义它们时采用的格式。

至今为止,我们已经写出了创建COFFEES表的SQL语句。现在我们将这个语句包裹在引号中,使其成为字符串,并将其赋值给变量createTableCoffees。在后续的JDBC代码中,我们将使用这个变量。值得注意的是,数据库管理系统并不在意语句的分行情况,但在Java语言中,字符串对象如果分行则无法通过编译。我们使用加号(+)来连接每一行的字符串。示例代码如下:

String createTableCoffees = "CREATE TABLE COFFEES " + "(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " + "SALES INTEGER, TOTAL INTEGER)";

在CREATE TABLE语句中使用的数据类型是通用的SQL类型(也称为JDBC类型),它们在java.sql.Types类中定义。数据库管理系统通常使用这些标准类型。当你尝试运行JDBC应用程序时,你可以直接使用CreateCoffees.java程序,它使用了CREATE TABLE语句。如果DBMS使用自己的本地类型名称,我们将提供其他应用程序,并在后面进行详细解释。

在运用任何应用程序之前,我们需要了解JDBC的基础知识。创建JDBC Statements对象。Statement对象用于将SQL语句发送到数据库管理系统。只需创建一个Statement对象,然后使用适当的方法执行你发送的SQL语句即可。对于SELECT语句,可以使用executeQuery方法。而要创建或修改表的语句则使用executeUpdate方法。

创建一个Statement对象的实例需要一个活跃的连接。以创建表为例,我们使用Connection对象con来创建Statement对象stmt:Statement stmt = con.createStatement();此时stmt已经存在,但还没有将SQL语句传递到DBMS。我们需要将SQL语句作为参数提供给我们使用的Statement方法。例如,在创建表的代码段中,我们将上述SQL语句作为executeUpdate的参数。因为我们已经将SQL语句赋值给了createTableCoffees变量,所以我们可以这样编写代码:stmt.executeUpdate(createTableCoffees);来执行语句。

我们使用executeUpdate方法是因为在createTableCoffees中的SQL语句是数据定义语言(DDL)语句。创建表、修改表、删除表都是DDL语句的例子,需要用executeUpdate方法来执行。从它的名字也可以看出,executeUpdate方法也用于执行更新表的SQL语句。实际上,与创建表相比,executeUpdate更多地用于更新表,因为表只需要创建一次,但经常被更新。

最常用的执行SQL语句的方法是executeQuery。这个方法用于执行SELECT语句,几乎是使用最广泛的SQL语句。接下来你将看到如何使用这个方法。

在数字化世界中,数据库是存储和检索信息的核心。想象一下,我们正在处理一个咖啡销售数据库,每一杯美味的咖啡都有它的详细信息。让我们深入了解一下如何使用SQL语句与数据库进行交互。

```java

Statement stmt = con.createStatement();

stmt.executeUpdate("INSERT INTO COFFEES VALUES ('Colombian', 101, 7.99, 0, 0)");

```

```java

stmt.executeUpdate("INSERT INTO COFFEES VALUES ('French_Roast', 49, 8.99, 0, 0)");

stmt.executeUpdate("INSERT INTO COFFEES VALUES ('Espresso', 150, 9.99, 0, 0)");

stmt.executeUpdate("INSERT INTO COFFEES VALUES ('Colombian_Decaf', 101, 8.99, 0, 0)");

stmt.executeUpdate("INSERT INTO COFFEES VALUES ('French_Roast_Decaf', 49, 9.99, 0, 0)");

```

```sql

SELECT FROM COFFEES;

```

这将返回表中的所有行和列。结果可能如下所示:

```bash

COF_NAME SUP_ID PRICE SALES TOTAL

-- -- -- --

Colombian 101 7.99 0 0

French_Roast 49 8.99 0 0

Espresso 150 9.99 0 0

... (其他咖啡)

```

如果你想查看具体的咖啡名称及其价格,可以使用如下查询:

```sql

SELECT COF_NAME, PRICE FROM COFFEES;

```

这将返回每杯咖啡的名称和价格。结果集将显示所有咖啡的名称和价格。而狼蚁网站SEO优化的SELECT语句只会选择价格低于$9.00的咖啡。这就是数据库查询的魔力所在,它让我们能够轻松地检索和管理大量数据。在我们的Java应用程序与数据库交互时,我们将学习如何检索和处理这些结果。让我们期待下一节的精彩内容吧!

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by