【问题标题】:Print SQL Query in Java (JTextPane)在 Java (JTextPane) 中打印 SQL 查询
【发布时间】:2021-01-13 13:00:54
【问题描述】:

我制作了一个也连接到数据库的简单游戏,一切正常,但我遇到问题的地方是让程序打印一个查询,以显示数据库中的条目(分数)

String sql = "select * from scores";
        
        try {
            PreparedStatement ps =
                conn.prepareStatement(sql);
                JTP.setText(""+ps.toString());
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

当我运行游戏(记分板通过按下按钮显示)并打开记分板时,我得到的文本是这样的:

“org.sqlite.jdbc4.JDBC4PreparedStatement@691f5716”

我对 Java 的所有东西都比较陌生,所以我不知道这意味着什么……有什么想法吗?

(编辑:JTP 是 JTextPane)

【问题讨论】:

  • 您是要打印 SQL 查询本身,还是它从数据库查询的结果?

标签: java sql sqlite prepared-statement


【解决方案1】:

嗯,这个问题还不够清楚。我认为您要做的是从数据库中获取查询结果。 这是一种方法: 此方法将执行我们的查询

 public ResultSet selectEntity(String query) {
        ResultSet result;
        try {
            PreparedStatement statement = connection.prepareStatement(query);
            result = statement.executeQuery();
        } catch (SQLException ex) {
            //handle your exception here
            return null;
        }
        return result;
 }

这个方法会得到查询的结果并传递给我们的JTextPane

private void printScore()
{
    //we're calling the method that executes the query
    ResultSet resultSet = this.selectEntity("SELECT * FROM scores");
    try {
        // I assume that the score is saved as Integer in the DB, so I'll use **getInt()**
        while(resultSet.next()) textPane.setText(""+resultSet.getInt(1));           
    } catch (SQLException e) {
        //handle your exception here
    }
}

【讨论】:

    【解决方案2】:

    我希望你没事。 我认为问题在于您准备了语句,但从未运行查询并获得结果。

        PreparedStatement ps = conn.prepareStatement(sql);
        ...you run the query.. an then use the results
        ...
        JTP.setText(""+results.toString());
    
    
        try
        {
          // create our mysql database connection
          String myDriver = "org.gjt.mm.mysql.Driver";
          String myUrl = "jdbc:mysql://localhost/test";
          Class.forName(myDriver);
          Connection conn = DriverManager.getConnection(myUrl, "root", "");
          
          String query = "SELECT * FROM SCORES";
    
          // create the java statement
          Statement st = conn.createStatement();
          
          // execute the query, and get a java resultset
          ResultSet rs = st.executeQuery(query);
          
          // iterate through the java resultset
          while (rs.next())
          {
            int id = rs.getInt("id");
            String score1 = rs.getString("score1");
            String score2 = rs.getString("score2");
            
            // print the results
            System.out.format("%s, %s, %s\n", id, score1, score2);
          }
          st.close();
        }
        catch (Exception e)
        {
          System.err.println("Got an exception! ");
          System.err.println(e.getMessage());
        }
    

    为了您的帮助,请阅读有关 Java 及其与数据库交互的对象的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多