目前,我已经创建了一个swing gui来从基本数据库中提取数据。
最终,我想把它构建成一个销售点系统,这就是开始。
一旦我得到了“基本”下来,我将能够扩大它与不同的标签和更多的项目。
目前,查询可以提取数据,我可以将代码打印到控制台,但当我尝试将其实现到每个标签或文本框时,它将只显示在一个文本框上,而不会显示其他文本框。
是否需要循环遍历我的每个标签,因为它们被标记为label1,label2。。。?那么如何确保sql查询加载到每个标签上呢?在循环中,我需要排序productid吗?
我尝试使用多个查询,得到的结果集是关闭错误,并认为有一个更简单的方法来获取数据。
代码如下:
package application;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.BoxLayout;
import javax.swing.JDesktopPane;
public class Application extends JFrame {
private JTextField prc2;
private JTextField prc1;
//private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Application frame = new Application();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Application() {
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
JDesktopPane desktopPane = new JDesktopPane();
getContentPane().add(desktopPane);
prc2 = new JTextField();
prc2.setBounds(70, 111, 86, 20);
desktopPane.add(prc2);
prc2.setColumns(10);
prc1 = new JTextField();
prc1.setBounds(70, 80, 86, 20);
desktopPane.add(prc1);
prc1.setColumns(10);
JLabel item1 = new JLabel("New label");
item1.setBounds(10, 83, 46, 14);
desktopPane.add(item1);
JLabel item2 = new JLabel("New label");
item2.setBounds(10, 114, 46, 14);
desktopPane.add(item2);
JLabel qty1 = new JLabel("New label");
qty1.setBounds(181, 83, 46, 14);
desktopPane.add(qty1);
JLabel qty2 = new JLabel("New label");
qty2.setBounds(181, 114, 46, 14);
desktopPane.add(qty2);
JLabel qty = new JLabel("Quantity");
qty.setBounds(181, 40, 46, 14);
desktopPane.add(qty);
JLabel Price = new JLabel("PRICE");
Price.setBounds(70, 40, 46, 14);
desktopPane.add(Price);
Connection conn = null;
//Statement stmt = null;
//ObservableList<String> data = FXCollections.observableArrayList();
try {
String dbURL = "jdbc:sqlserver://localhost:1433;databaseName = Capstone; username=dbuser; password=password";
conn = DriverManager.getConnection(dbURL);
Statement stmt = conn.createStatement();
String sqlStmt = "SELECT * FROM dbo.products WHERE ProductID = 1";
ResultSet rs = stmt.executeQuery(sqlStmt);
while (rs.next()) {
int id = rs.getInt("ProductID");
String productName = rs.getString("productName");
String quant = rs.getString("productQty");
String price = rs.getString("ProductPrice");
item1.setText(productName);
qty1.setText(quant);
prc1.setText(price);
}
String sqlStmt1 = "SELECT * FROM dbo.products WHERE ProductID = 2";
ResultSet rs1 = stmt.executeQuery(sqlStmt1);
while (rs1.next()) {
int id1 = rs.getInt("ProductID");
String productName1 = rs.getString("productName");
String quant1 = rs.getString("productQty");
String price1 = rs.getString("ProductPrice");
item2.setText(productName1);
qty2.setText(quant1);
prc2.setText(price1);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
如果我遗漏了一个类似的问题,请给我指出正确的方向。
暂无答案!
目前还没有任何答案,快来回答吧!