如何将sql查询的结果导入jtable?

axzmvihb  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(296)

我试图将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查询的结果

zf9nrax1

zf9nrax11#

空指针异常通常不是用值初始化而是获取空值。尝试添加断点以检查空值的位置,一旦找到,请添加:

if (variable != null) { //variable could be an object

   //some code

}
ar7v8xwq

ar7v8xwq2#

resultset对象没有设置行?

result = statement.executeQuery(code);
double[] data = {result.getFloat(2), result.getFloat(3), ...};

不能直接访问结果集中的行。首先需要指向结果集中的一行。
这是通过调用 next() 方法 ResultSet .
然后通常使用循环代码读取 ResultSet :

result = statement.executeQuery(code);

while (result.next())
{
    // get the data from the current row of the ResultSet 
}

有关如何从结果集创建defaulttablemodel的更完整示例,请参阅:如何将defaulttablemodel对象的数据获取到defaulttablemodel的子类中。
另外,你应该使用 PreparedStatement 以生成sql查询。它将允许您更轻松地设置查询的参数。在论坛上搜索更多信息和示例代码。

相关问题