【发布时间】:2019-09-11 06:20:41
【问题描述】:
我正在编写一个代码来管理一家咖啡馆,所以在框架中我添加了一个 JTable,每次我从 JComboBox 中选择一个项目时,它都应该显示在 JTable 中。为此,我添加了一个按钮,并且为了它的操作,我确保每次单击它时,它将从 JComboBox 中单击的项目存储在数据库中,然后从数据库中将其获取到 Jtable 中。但问题是 JTable 有 2 列,而 JComboBox 中的选择只有一列。所以必须从另一个数据库调用另一列,这意味着我必须在另一个数据库中调用一个 sql 查询,我不知道该怎么做。我试过下面的代码,但它给了我这个错误“你的 SQL 语法有错误;检查与你的 MariaDB 服务器版本相对应的手册,以在第 1 行的‘产品’附近使用正确的语法”
b2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/café", "root",
"ata1");
Statement statement = connection.createStatement();
ResultSet resultat = statement.executeQuery ( "SELECT prix FROM commande_existantes WHERE "+ cb.getSelectedItem() + "IN produit" );
Statement stmt = connection.createStatement();
stmt.executeUpdate("INSERT INTO commande_existante VALUES ('" + cb.getSelectedItem() + "'," +resultat+ ")");
} catch (Exception a) {
a.printStackTrace();
}
}
});
【问题讨论】:
-
首先,您需要在
IN之前留一个空格,但我认为您的查询没有任何意义。 -
使用存储过程。您的操作存在安全问题。避免使用原始查询。为了防止 sql 注入。
-
@Mr.AF 为什么是
stored procedure- 也许你的意思是使用PreparedStatement类? -
从您发布的代码看来,您有两个数据库表,一个名为
commande_existantes,一个名为commande_existante,对吗?这些数据库表中的列的名称和数据类型是什么? -
select prix from commande_existantes where columnA = 'selectedValue'是正常的SQL写法