public void testJdbc() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/javawebdb?serverTimezone=UTC", "root", "wwd20020906"); PreparedStatement preparedStatement = connection.prepareStatement("select * from t_user"); ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { System.out.println("id:" + resultSet.getString("id") + ",name:" + resultSet.getString("name") + ",age:" + resultSet.getString("age")); } resultSet.close(); preparedStatement.close(); connection.close(); }
时间: 2024-04-10 08:29:11 浏览: 51
这是一个使用Java JDBC连接MySQL数据库的测试方法。该方法首先加载MySQL驱动程序,然后通过驱动程序管理器获取数据库连接。接下来,它创建一个预处理语句,并执行一个查询语句来检索用户表中的数据。然后,使用结果集遍历查询结果,并将每行数据打印到控制台。最后,关闭结果集、预处理语句和数据库连接。如果在过程中出现了ClassNotFoundException或SQLException异常,它们将被抛出。
相关问题
// Java Web应用开发技术教程 // 张庆华 // 清华大学出版社 // 2022年3月第一版 // ver 1.0 // 4.3.3 JDBC访问数据库的基本步骤 // 程序 4-1:JDBC连接数据库基本步骤 package chap4samp; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Chap4JDBC { public void testJDBC() { Connection dbConn = null; Statement stmt = null; ResultSet rs = null; try { // 1加载驱动程序 String DBDRIVER = "com.mysql.cj.jdbc.Driver";// MySQL Class.forName(DBDRIVER); // 2建立连接 String url = "jdbc:mySql://localhost:3306/javawebdb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false";// 此条语句在一行,无空格。 String userName = "root"; String password = "123456"; dbConn = DriverManager.getConnection(url, userName, password); // 3创建SQL数据库操作对象 stmt = dbConn.createStatement(); // 4生成SQL语句,在本例中,为了展示JDBC数据库连接和操作,需要用到创建数据表、添加记录、查询记录等几条SQL语句 String createtablesql = "create table studentinfo(stdNo varchar(10) not null,stdName varchar(20),stdAge int(11),stdMajor varchar(255), stdHometown varchar(255),PRIMARY KEY(stdNo))";// 创建表SQL语句 String insertsql = "insert into studentinfo values('2017001','张琴',18,'物流工程','襄阳')";// 添加记录SQL语句 String querysql = "select * from studentinfo";// 查询记录SQL语句 // String deletetablesql="DROP TABLE studentinfo";//删除表SQL语句 // 5执行SQL语句 stmt.executeQuery(createtablesql);// 创建表 stmt.executeQuery(insertsql);// 添加记录,多次运行会提示记录已存在 rs = stmt.executeQuery(querysql);// 查询记录 // 6处理结果集 while (rs.next()) { String stdNo = rs.getString("stdNo"); String stdName = rs.getString("stdName"); int stdAge = rs.getInt("stdAge"); String stdHometown = rs.getString("stdHometown"); System.out.println("学号:" + stdNo + ", 姓名:" + stdName + ", 年龄:" + stdAge + ", 生源地:" + stdHometown); } // stmt.executeUpdate(deletetablesql);//删除表 } catch (Exception e) { e.printStackTrace(); } finally { // 7关闭所有数据库资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (dbConn != null) { try { dbConn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static void main(String[] args) { Chap4JDBC mytest = new Chap4JDBC(); mytest.testJDBC(); } }仍然有错,该怎么修改
在程序中出现了以下错误:
1. 驱动程序名写错了,应该为 "com.mysql.jdbc.Driver"。
2. 数据库连接语句写错了,应该为 "jdbc:mysql://localhost:3306/javawebdb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false"。
3. 执行SQL语句时,应该使用 "stmt.executeUpdate(createtablesql)" 和 "stmt.executeUpdate(insertsql)",而不是 "stmt.executeQuery()"。
修改后的程序如下:
```java
package chap4samp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Chap4JDBC {
public void testJDBC() {
Connection dbConn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1加载驱动程序
String DBDRIVER = "com.mysql.jdbc.Driver";
Class.forName(DBDRIVER);
// 2建立连接
String url = "jdbc:mysql://localhost:3306/javawebdb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false";
String userName = "root";
String password = "123456";
dbConn = DriverManager.getConnection(url, userName, password);
// 3创建SQL数据库操作对象
stmt = dbConn.createStatement();
// 4生成SQL语句,在本例中,为了展示JDBC数据库连接和操作,需要用到创建数据表、添加记录、查询记录等几条SQL语句
String createtablesql = "create table studentinfo(stdNo varchar(10) not null,stdName varchar(20),stdAge int(11),stdMajor varchar(255), stdHometown varchar(255),PRIMARY KEY(stdNo))";// 创建表SQL语句
String insertsql = "insert into studentinfo values('2017001','张琴',18,'物流工程','襄阳')";// 添加记录SQL语句
String querysql = "select * from studentinfo";// 查询记录SQL语句
// String deletetablesql="DROP TABLE studentinfo";//删除表SQL语句
// 5执行SQL语句
stmt.executeUpdate(createtablesql);// 创建表
stmt.executeUpdate(insertsql);// 添加记录,多次运行会提示记录已存在
rs = stmt.executeQuery(querysql);// 查询记录
// 6处理结果集
while (rs.next()) {
String stdNo = rs.getString("stdNo");
String stdName = rs.getString("stdName");
int stdAge = rs.getInt("stdAge");
String stdHometown = rs.getString("stdHometown");
System.out.println("学号:" + stdNo + ", 姓名:" + stdName + ", 年龄:" + stdAge + ", 生源地:" + stdHometown);
}
// stmt.executeUpdate(deletetablesql);//删除表
} catch (Exception e) {
e.printStackTrace();
} finally {
// 7关闭所有数据库资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (dbConn != null) {
try {
dbConn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Chap4JDBC mytest = new Chap4JDBC();
mytest.testJDBC();
}
}
```
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1334) at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2084) at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1245) at chap4samp.Chap4JDBC.testJDBC(Chap4JDBC.java:40) at chap4samp.Chap4JDBC.main(Chap4JDBC.java:82)这种报错怎么解决
这个报错是由于 SQL 执行出错所引起的,可能是由于 SQL 语句错误或者数据库连接异常导致的。
建议您先检查 SQL 语句是否正确,并且检查您的数据库连接是否正常。您可以根据报错信息中的 Chap4JDBC.java 文件的第 40 行进行排查,看看 SQL 语句是否有问题。如果 SQL 语句没有问题,可以尝试检查数据库连接参数是否正确,并且确保数据库已经启动。
另外,您也可以提供更多的报错信息或者代码,这样我可以更具体地帮您分析和解决问题。
阅读全文