MainWindows.java
public class MainWindow extends javax.swing.JFrame {
public MainWindow() {
initComponents();
}
private void initComponents() {......}
private void GetSqlButonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String[] args1={"1"};
SqlQuery.main(args1);
}
});
}
public static void main(String args[]) {
Look and feel setting code created by Netbeans
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
}
private javax.swing.JComboBox ComboBox1;
private javax.swing.JButton GetSqlButon;
}
SqlQuery.java
import java.sql.*;
public class SqlQuery {
static String Query = "select top 10 date,number from Records\n" +
"where date between '2014-01-01 10:00:00.000' and '2014-01-01 11:00:00.000'\n" +
"and ID='013'";
public static void main(String args[]) {
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://192.168.100.100;user=sa;password=passsa;database=ExampleDB");
Statement sta = con.createStatement();
ResultSet rs = sta.executeQuery(Query);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columnsNumber; i++) {
if (i > 1) System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue + " " + rsmd.getColumnName(i));
}
System.out.println("");
}
con.close();
}
catch (Exception e)
{
System.out.println("Baglanti Hatasi");
}
}
}
当我使用Jbutton时,我可以成功从SqlQuery.java中检索结果集。
我对Combobox有疑问。我想要;当按下Jbutton从SqlQuery.java获取结果集时,Combobox选择的值必须在SqlQuery.java中用于此行“和ID ='comboboxvalue'”;
如何将此非静态值发送到SqlQuery.java的静态方法?
我知道我必须创建实例,但我不知道如何。你能解释一下吗?
答案 0 :(得分:1)
如我的评论中所述,您不需要两种main
方法。相反,只需创建一个SqlQuery
的实例,并拥有一个将传递一个值的构造函数。像这样的东西
public class SqlQuery {
String comboBoxValue;
public SqlQuery(String value) {
comboBoxValue = value;
}
}
然后你可以传递价值。到构造函数
String value = (String)comboBox.getSelectItem();
SqlQuery sql = new SqlQuery(value);
此外,查询应该返回结果,因此您希望只能从静态方法返回ResultSet
,您可以在GUI类中使用。像
public class SqlQuery {
public static ResultSet sendQuery(String value) {
}
}
然后你可以这样做
String value = (String)comboBox.getSelectItem();
ResultSet rs = SqlQuery.setQuery(value);
// do something with result set.
有很多方法可以解决这个问题。
另请注意,您应该使用PreparedStatement
而不是Statement
来避免SQL注入。