[英]Getting data From a java DB with SQL Using ResultSet
我创建了一个方法来使用 SQL 从 Java 中的数据库中获取值并将信息存储在ResultSet
,然后使用while
循环将信息存储在RentSendItem
,并将所有这些项目存储在名为sendList
的ArrayList
但是当我尝试运行它,它给了我错误:
'结果集未打开。 不允许操作“getString”。 验证自动提交已关闭'
这是我的课:
public void getDataFromDB() {
System.out.println("Wordk");
//connecting
Connection connection = null;
Statement statement = null;
try {
System.out.println("1");
connection = DriverManager.getConnection(url, username, password);
statement = connection.createStatement();
ResultSet name = statement.executeQuery("SELECT firstname,surname FROM CUSTOMER");
ResultSet titles = statement.executeQuery("Select Title,Category From ADDDVD ");
System.out.println(name.getString("firstname"));
System.out.println("2");
while (name.next()) {
String fullName = name.getString("firstname") + " " + name.getString("surname");
RentSendItem item = new RentSendItem(name.getString("firstname") + name.getString("surname"), titles.getString("Category"), titles.getString("title"));
sendList.add(item);
}
System.out.println("3");
} catch (Exception e) {
System.out.println("Error" + e.getMessage());
}
}
所以只想知道我做错了什么,这门课会做我想做的事。 如果你能帮助我,我将不胜感激。
您的代码中有几个问题。
next()
之前,不能调用接口java.sql.ResultSet
方法getString()
next()
。 首先调用方法next()
,如果该方法返回“true”,则可以调用方法getString()
。titles
上调用next()
方法。getString()
。将以下内容与您的代码进行比较。
public void getDataFromDB() {
System.out.println("Wordk");
// connecting
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement()) {
System.out.println("1");
ResultSet name = statement.executeQuery("SELECT firstname,surname FROM CUSTOMER");
ResultSet titles = statement.executeQuery("Select Title,Category From ADDDVD ");
System.out.println("2");
while (name.next()) {
String firstname = name.getString("firstname");
String surname = name.getString("surname");
String fullName = firstname + " " + surname;
if (titles.next()) {
RentSendItem item = new RentSendItem(fullName,
titles.getString("Category"),
titles.getString("title"));
sendList.add(item);
}
}
System.out.println("3");
}
catch (Exception e) {
e.printStackTrace();
}
}
此外,以下不是问题而是建议。
catch
块中,通常最好打印整个堆栈跟踪,而不仅仅是错误消息。Connection
和Statement
。 在上面的代码中,我使用了try-with-resources
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.