我试图将sql查询的结果导入jtable,但是当我运行它时,它告诉我resultset对象没有set行?这是什么意思?我怎样才能解决这个问题?以下是我尝试过的:
import javax.swing.*;
import java.sql.*;
public class GUI {
// frame
JFrame f;
// Table
JTable j;
// Constructor
GUI()
{
ResultSet result;
// Frame initiallization
f = new JFrame();
// Frame Title
f.setTitle("SQL to JTable");
try{
String dbURL = "jdbc:sqlserver://DESKTOP-TSKUNOE\\MSSQLSERVER:1433;databaseName=LMD";
String user = "programer151";
String password = "abhinav@123";
Connection connection = DriverManager.getConnection(dbURL, user, password);
String code = "select * from dbo.LMD_Table where [DATE] = '2019-02-01'";
Statement statement = connection.createStatement();
result = statement.executeQuery(code);
// Data to be displayed in the JTable
double[] data =
{result.getFloat(2), result.getFloat(3), result.getFloat(4), result.getFloat(5), result.getFloat(6), result.getFloat(7), result.getFloat(8), result.getFloat(9), result.getFloat(10), result.getFloat(11), result.getFloat(12), result.getFloat(13)};
;
String[][] data1 = new String[13][0];
for (int i = 0; i<=13; i++) {
data1[i][0] = String.valueOf(data[i]);
}
String[] columnNames = { "data", "data","data", "data", "data","data", "data", "data","data", "data", "data","data" };
j = new JTable(data1,columnNames);
j.setBounds(30, 40, 200, 300);
// adding it to JScrollPane
JScrollPane sp = new JScrollPane(j);
f.add(sp);
// Frame Size
f.setSize(500, 200);
// Frame Visible = true
f.setVisible(true);
}catch (SQLException e){
e.printStackTrace();
}
}
// Driver method
public static void main(String[] args)
{
new GUI();
}
}
我想要的输出是一个jtable,它给我一个sql查询的结果
2条答案
按热度按时间zf9nrax11#
空指针异常通常不是用值初始化而是获取空值。尝试添加断点以检查空值的位置,一旦找到,请添加:
ar7v8xwq2#
resultset对象没有设置行?
不能直接访问结果集中的行。首先需要指向结果集中的一行。
这是通过调用
next()
方法ResultSet
.然后通常使用循环代码读取
ResultSet
:有关如何从结果集创建defaulttablemodel的更完整示例,请参阅:如何将defaulttablemodel对象的数据获取到defaulttablemodel的子类中。
另外,你应该使用
PreparedStatement
以生成sql查询。它将允许您更轻松地设置查询的参数。在论坛上搜索更多信息和示例代码。