我对Java世界很陌生,我不太清楚如何做到这一点。
我有一个MySQL类,可以很好地提取表格,并将其打印到控制台。但是,我需要从另一个类做自定义SQL查询,我无法弄清楚如何做到这一点。有谁可以帮忙吗?
这是mysql类:
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class mySQL {
public static void main(String[] args) {
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
String url = "jdbc:mysql://host:port/database";
String user = "user";
String password = "password";
try {
con = DriverManager.getConnection(url, user, password);
pst = con.prepareStatement("SELECT * FROM NFT_users");
rs = pst.executeQuery();
con = DriverManager.getConnection(url, user, password);
while (rs.next()) {
System.out.print(rs.getInt(1));
System.out.print(": ");
System.out.println(rs.getString(2));
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(mySQL.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
} finally {
try {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(mySQL.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
}
}
答案 0 :(得分:1)
您的问题不是SQL
,而是软件设计。
考虑一个完整存在的类,它允许您访问数据。它将执行所有连接内容(private void loadConnection
),然后使用ArrayList<User> getUsers()
等方法。
然后,当您需要User
的列表时,您只需执行myDatabaseObject.getUsers()
,或者在其他情况下执行myDatabaseObject.getOtherObjects()
。但是,您的其余代码都不会知道有关SQL或连接到数据库的任何信息。
如果您想做的不仅仅是非常简单的数据库访问,您应该考虑学习Hibernate。 Wikipedia link.如果您一直在阅读本网站上的问题并想知道Hibernate是什么,那么它就是完成此任务的工具。
至于如何自己完成此操作,只需将连接代码放在构造函数中,将连接保存到字段,并让上述方法执行查询(最好使用PreparedStatement
)。