Java 使用StringBuilder接收所有列

Java 使用StringBuilder接收所有列,java,mysql,Java,Mysql,我编写了一个方法,它执行以下命令:select、insert、update、delete。最初,在运行SELECT*fromsithlords之后,我只需要输出的前两列。如何获取所有的行和列?此外,我如何允许用户在运行select命令时添加换行符,如下所示: 选择绝地武士的名字 来自西斯洛兹 其中级别=‘主级’ 到目前为止,它只执行一行: 从SithLords中选择绝地武士的名字,等级='master' 代码: public void actionPerformed(ActionEvent e)

我编写了一个方法,它执行以下命令:select、insert、update、delete。最初,在运行
SELECT*fromsithlords
之后,我只需要输出的前两列。如何获取所有的行和列?此外,我如何允许用户在运行select命令时添加换行符,如下所示:

选择绝地武士的名字
来自西斯洛兹
其中级别=‘主级’

到目前为止,它只执行一行:

从SithLords中选择绝地武士的名字,等级='master'

代码:

public void actionPerformed(ActionEvent e) {
    String query = queryStatements.getText();
    try {
        PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(query);
            if(query.matches("(select|SELECT).*")) {
                ResultSet result = stmt.executeQuery();
                StringBuilder strResult = new StringBuilder();
                while(result.next()) {
                    strResult.append(result.getString(1)).append(" ").append(result.getString(2));
                    strResult.append("\n");
                }
                queryResults.setText(strResult.toString());
            } else if(query.matches("(insert|INSERT).*")) {
                stmt.executeUpdate(query);
            } else if(query.matches("(update|UPDATE).*")) {
               stmt.executeUpdate(query);
            } else if(query.matches("(delete|DELETE).*")) {
               stmt.executeUpdate(query);
            } else {
               System.out.println("Not supported yet!");
            }
        } catch (SQLException error) {
          error.printStackTrace();
    }
}

如果您想从recorset中检索其所有列,您可以询问它有多少列(n)以及从1到n的访问权限:

ResultSet result = stmt.executeQuery();
ResultSetMetaData md = result.getMetaData();
int nCols = md.getColumnCount();
for(int c = 1; c <= nCols; c++)
  strResult.append(result.getString(c).append(" "));

我完全不明白你的问题。@nachokk我会重新编辑它。全部完成!啊,所以反过来,它真的把所有的空间实例移到一行中。我不知道为什么我没有想到这一点。谢谢你指出这一点,巴勃罗!哦,
nCols
不应该是Int类型吗?是的,它是一个代码片段,但我将进行编辑以包含nCols声明。在结果集开始之前,我得到一个sql异常。@TheGrayFox在prepareStatement?
query.replaceAll("(\\r|\\n)", " ");