1.连接数据库
这段代码是用于在Java中通过JDBC(Java Database Connectivity)连接到MySQL数据库,并执行一个SQL查询的示例。下面是对每一行代码的详细解释:
-
加载MySQL JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
这行代码通过
Class.forName()
方法动态加载MySQL JDBC驱动类。这是旧版本的JDBC连接数据库时常用的方式,用于确保JDBC驱动被JVM(Java虚拟机)加载。不过,从JDBC 4.0开始,如果JDBC驱动被打包为JAR文件并放在应用的classpath中,那么驱动会自动被加载,因此这行代码在现代应用中可能不是必需的。不过,在一些旧的系统或特定配置下,仍然可能需要显式加载驱动。 -
建立数据库连接
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/eldenringdb?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false", "root", "123456");
这行代码通过
DriverManager.getConnection()
方法建立到MySQL数据库的连接。它接受三个参数:- 第一个参数是数据库的URL,格式为
jdbc:mysql://主机名:端口/数据库名?参数=值&...
。这里,jdbc:mysql://127.0.0.1:3306/eldenringdb
指定了数据库的位置(本地主机,端口3306,数据库名为eldenringdb
),后面的?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
是连接参数,用于设置时区、字符编码、是否使用Unicode以及是否使用SSL连接。 - 第二个和第三个参数分别是数据库的用户名和密码,这里分别是
root
和123456
。
- 第一个参数是数据库的URL,格式为
-
准备SQL语句
String sql = "SELECT * FROM bosses";
这行代码定义了一个SQL查询语句,用于从
bosses
表中检索所有记录。 -
创建PreparedStatement
PreparedStatement ps = con.prepareStatement(sql);
这行代码通过
Connection
对象的prepareStatement()
方法创建一个PreparedStatement
对象。PreparedStatement
不仅允许你预编译SQL语句,还可以提高性能(尤其是当SQL语句被多次执行时),并且可以防止SQL注入攻击。不过,在这个例子中,由于sql
变量是一个静态的SQL查询,并没有使用PreparedStatement
的参数化查询功能。 -
执行查询并获取结果集
ResultSet rs = ps.executeQuery();
这行代码尝试执行前面定义的SQL查询,并返回一个
ResultSet
对象。当使用
PreparedStatement
时,应该调用executeQuery()
方法时不带任何参数(因为SQL语句已经在prepareStatement()
中定义了)。正确的调用应该是ResultSetrs=ps.executeQuery();
。ResultSet
对象包含了查询结果的所有行。你可以通过遍历ResultSet
对象来访问每一行的数据。综上所述,最后一行代码应该修改为
ResultSet rs = ps.executeQuery();
以正确地从PreparedStatement
执行查询并获取结果集。