public void selectStudent() throws SQLException{
try{
con= this.getConnection();
if(con!=null){
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT * FROM dbo.Student";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
// Iterate through the data in the result set and display it.
while (rs.next()) {
for(int i=0;i<=5;i++){
data[rs.getRow()][i]=rs.getString(i+1);
}
}
closeConnection();
}else System.out.println("Error: No active Connection");
}catch(Exception e){
e.printStackTrace();
}
}
我想将JDBC SQL查询的结果添加到一个二维对象数组中,以便将来在表(swingUI)中使用。不幸的是,上面的代码不起作用,我不知道为什么——我在将结果保存到数据对象时出错。
我得到的错误类型是NullPointerException。
我想你有一个这样的对象:
Object[][] data;
为此,您会收到一个错误NullPointerException
,因为它没有初始化它,所以在您将结果放入此数组之前,您应该像这样初始化它:
data = new String[numberOfRow][6];
while (rs.next()) {
for(int i=0; i<=5; i++){
data[rs.getRow()][i]=rs.getString(i+1);
}
}
编辑
Object[][] data = {{"Kathy", "Smith", "Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe", "Rowing", new Integer(3), new Boolean(true)}};
这使您越来越多地定义属性的类型,因此我建议您创建一个新的Type,例如:
public class TypeObject {
private String s1;
private String s2;
private String s3;
private String i1;
private boolean b1;
public TypeObject(String s1, String s2, String s3, String i1, boolean b1) {
this.s1 = s1;
this.s2 = s2;
this.s3 = s3;
this.i1 = i1;
this.b1 = b1;
}
//getters and setters
}
因此,相反,使用和 Object[][]
使用 TypeObject[],
您可以轻松设置或获取属性,如下所示:
TypeObject[] data = new TypeObject[numberRow];
TypeObject d = new TypeObject(rs.getString("c1"), rs.getString("c2"), rs.getString("c3"), rs.getInt("c4"), rs.getBoolean("c5"));
data[i] = d;
因此,这种方式的优点是:
TypeObject
类中添加一个新字段我有一个用户类,有16个属性,比如名字,姓氏,出生日期,用户名,密码等...这些都存储在MySQL数据库中,当我想要检索用户时,我使用ResultSet。我想将每一列映射回用户属性,但我这样做的效率似乎非常低。例如,我正在做: 也就是说,我检索所有的列,然后通过将所有的列值插入用户构造函数来创建用户对象。 有人知道更快、更整洁的方法吗?
主要内容:ResultSet类型,ResultSet的并发性,浏览结果集,查看结果集,更新结果集SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 语句用于从数据库中选择行并在结果集中查看它们的标准方法。 接口表示数据库查询的结果集。 对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在对象中的行和列数据。 接口的方法可以分为三类: 浏览方法:用于移动光标。 获取方法:用于查看光标指向的当前行的列中的数据。 更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数
问题内容: 我正在使用CsvJdbc(它是用于csv文件的JDBC驱动程序)来访问csv文件。我不知道csv文件包含多少列。如何获得列数?是否有任何JDBC函数?我在java.sql.ResultSet中找不到任何方法。 为了访问该文件,我使用类似于CsvJdbc网站上示例的代码。 问题答案: 您可以从ResultSetMetaData获取列号:
我需要帮助将结果集值从servlet转发到jsp,而不使用JSTL实现 工作流程: 用户在输入框中输入值并单击搜索按钮 单击搜索时会调用servlet。servlet专注于数据库实现并将结果集值转发到请求所在的同一jsp页面。 问题:我的结果集大小是3,但仅表顶部的值就打印在我的jsp页面中。其余2个值缺失。我希望所有的值都打印在我的jsp页面中。 这是我的代码: Productlist.jsp
问题内容: 我正在使用JDBC来实现非常简单的数据库连接。 我已经创建了连接/语句并执行了查询。我在调试器中检查语句的查询对象,以确认它正在发送正确的查询。然后,我再次检查了数据库中的查询(直接从调试器复制),以确保其返回数据。但是,返回的结果集在.next()上给出false 这里有我遗漏的常见陷阱吗? 还有myDB类(一个简单的包装程序,使我可以将连接/语句代码放入任何项目中) 编辑:根据建议
我正在从数据库中读取pdf文件列表,对它们进行解析,并用它们执行一些任务 当我阅读这个pdf列表时,我发现从pdf中提取图像需要花费更多的时间,而且我不需要阻止我的主线程来阅读图像。所以我想在一个单独的线程中执行提取图像 我想从一个又一个pdf中读取图像,而不是一次将所有pdf加载到内存中(由于内存问题)。所以我只想要两条线;一个应该是主线程(从pdf中读取一些文本并执行其他操作),另一个应该是提