在 Java 中打印 SQL 查询 (JTextPane)
Print SQL Query in Java (JTextPane)
我制作了一个也连接到数据库的简单游戏,一切正常,但我遇到问题的地方是让程序打印我为显示数据库中的条目(分数)所做的查询
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)
希望你一切都好。
我认为问题在于您准备了语句,但从未 运行 查询并获得结果。
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 及其与数据库交互的对象的更多信息。
嗯,问题不够明确。我认为您要做的是从数据库中获取查询结果。
这是一种方法:
这个方法将执行我们的查询
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
}
}
我制作了一个也连接到数据库的简单游戏,一切正常,但我遇到问题的地方是让程序打印我为显示数据库中的条目(分数)所做的查询
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)
希望你一切都好。 我认为问题在于您准备了语句,但从未 运行 查询并获得结果。
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 及其与数据库交互的对象的更多信息。
嗯,问题不够明确。我认为您要做的是从数据库中获取查询结果。 这是一种方法: 这个方法将执行我们的查询
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
}
}