gpt4 book ai didi

java - 在 Java 中的另一个类上使用非静态组合框值

转载 作者:行者123 更新时间:2023-12-01 13:28:38 25 4
gpt4 key购买 nike

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 中用于此行“and ID='comboboxvalue'”;

如何将此非静态值发送到 SqlQuery.java 的静态方法?

我知道我必须创建实例,但我不知道如何创建。能请人解释一下吗?

最佳答案

正如我的评论中所述,您不需要两个 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中使用它类(class)。类似的东西

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 注入(inject)。

关于java - 在 Java 中的另一个类上使用非静态组合框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21678323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com