行家

最重要的细节是 MySQL 服务器本身的 JDBC 驱动程序库。它只是不会出现在您的计算机上,因此您需要将其添加到那里。

如果您正在使用 Maven,那么您需要通过指出正确的库来帮助他。

MySQL JDBC 驱动程序:

   	<dependency>
        	<groupId>mysql</groupId>
        	<artifactId>mysql-connector-java</artifactId>
        	<version>8.0.29</version>
    	</dependency>

只需将此代码添加到您的pom.xml

我也会给出几个比较流行的驱动。

PostgeSQL的 JDBC 驱动程序:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.4.0</version>
</dependency>

Oracle的 JDBC 驱动程序:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>21.5.0.0</version>
</dependency>

H2的 JDBC 驱动程序:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

第一次数据库查询

所有必需的库都包含在内,现在是运行您的第一个数据库访问程序的时候了。我们将在main()方法中编写所有代码。

第一阶段在main()方法之前添加一些导入- 这将使您的生活更轻松:

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

第 2 阶段。首先我们需要创建一个数据库连接。为此,在main()方法中,编写以下代码:

Connection connection  = DriverManager.getConnection(
           "jdbc:mysql://localhost:3306/test",
           "login", "password");

您也可以在一行中完成 - 以您更方便的方式为准。登录名和密码,当然,您需要从本地 MySQL 服务器替换真实的。

第 3 阶段。我们创建对数据库的查询。让我们从用户表中获取所有用户。然后你需要添加这行代码:

Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT * FROM user");

那是两条线。首先我们创建一个对象陈述,第二,我们用它来查询数据库。executeQuery()方法执行数据库查询并返回一个类型的对象结果集.

第 4 阶段。显示对象中包含的数据结果集.

结果集- 这不是一个集合,它只是被称为那个。它存储查询执行的结果。这个对象有点类似于迭代器:它允许你设置/改变结果的当前行,然后你可以从这个当前行中获取数据。将以下代码添加到您的示例中:

while (results.next()) {
        	Integer id = results.getInt(1);
        	String name = results.getString(2);
        	System.out.println(results.getRow() + ". " + id + "\t"+ name);
}

next()方法将当前结果行更改为下一行。如果有这样一行,则返回 true,如果没有更多行,则返回 false。

然后从对象的当前行结果集您可以从其列中获取数据:

  • getRow() - 返回对象中当前行的编号结果集
  • getInt(N) - 将当前行第 N 列的数据作为 int 返回
  • getString(N) - 将当前行第 N 列的数据作为字符串返回

完整的程序列表

为了尽量减少错误,这里是程序的完整列表:

package org.example;

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

public class JdbcApplicatin {
    public static void main(String[] args) throws  Exception{
 	   Connection connection  = DriverManager.getConnection(
          	"jdbc:mysql://localhost:3306/test",
          	"root", "secret");

        Statement statement = connection.createStatement();
    	ResultSet results = statement.executeQuery("SELECT * FROM user");

    	while (results.next()) {
        	Integer id = results.getInt(1);
        	String name = results.getString(2);
        	System.out.println(results.getRow() + ". " + id + "\t"+ name);
    	}
    	connection.close();
    }
}

运行程序后我的屏幕输出:

“C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe...
十一 伊万诺夫伊万
2.2 彼得罗夫·尼古拉
3.3 西多罗夫·维塔利
进程结束,退出代码为 0