gpt4 book ai didi

java - 我如何将一个sql查询作为参数传递给java中的另一个sql查询?

转载 作者:行者123 更新时间:2023-12-02 06:25:42 24 4
gpt4 key购买 nike

我正在编写一个代码来管理一家咖啡馆,因此在框架中我添加了一个 JTable,每次我从 JComboBox 中选择一个项目时,它都应该显示在 JTable 中。为此,我添加了一个按钮,并确保每次单击它时,它都会将从 JComboBox 单击的项目存储在数据库中,然后从数据库中将其提取到 Jtable 中。但问题是 JTable 有 2 列,而 JComboBox 的选项只有一列。所以另一列必须从另一个数据库调用,这意味着我必须在另一个数据库中调用 sql 查询,但我不知道该怎么做。我尝试了下面的代码,但它给了我这个错误“您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本对应的手册,以获取在第 1 行'produit'附近使用的正确语法”

b2.addActionListener(new ActionListener() { 公共(public)无效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();
}
}
});

最佳答案

您可能想要类似的东西:

Statement statement = connection.createStatement();
ResultSet resultat =
statement.executeQuery ( "SELECT prix FROM commande_existantes " +
" WHERE produit = " + cb.getSelectedItem() );
if (rs.next) {
stmt.executeUpdate("INSERT INTO commande_existante VALUES " +
"('" + cb.getSelectedItem() + "'," +
resultat.getDouble("prix")+ ")");
}

我假设“produit”是“commande_existantes”中的列名称 - 所以您只想找到“produit”值是您选择的行。在 SQL 中,“IN”用于在“IN”之后指定的列表中查找值... - 但查询已经查看该表中的所有行,查找与“WHERE”子句的匹配项,所以“=”比较就是你所需要的。

ResultSet 可能代表一个值表,这些值是您运行的查询的答案 - 因此您需要移动到一行(使用“next()”),然后获取您想要的列值(在本例中,使用对“getDouble()”的调用。

您应该寻找有关 JDBC 的教程,特别是如何在 SQL 中使用参数,而不是像此处那样将值嵌入到 SQL 中。

关于java - 我如何将一个sql查询作为参数传递给java中的另一个sql查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787928/

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