如何在Java中使用SQL代码正确使用复合键

如何在Java中使用SQL代码正确使用复合键,java,mysql,sql,select,Java,Mysql,Sql,Select,所以我正在为一个酒店管理系统制作一个小软件,我需要一些从数据库调用值的帮助。在我的数据库中有一个名为KOT的表。此表包含以下列:idfood、iditem、amount。”idfood'和iditem都是构成复合密钥的主键 这就是数据库的测试值(很抱歉,我不得不使用一个图像托管站点,我没有足够的声誉在这个站点上发布): 现在,我在NetBeans中创建了一个界面,如下所示: 我想做的是,当我在文本框(例如“1”)中输入一个值时,表中应该显示所有idfood为“1”的记录。我将感谢任何帮助 以

所以我正在为一个酒店管理系统制作一个小软件,我需要一些从数据库调用值的帮助。在我的数据库中有一个名为KOT的表。此表包含以下列:idfood、iditem、amount。”idfood'和iditem都是构成复合密钥的主键

这就是数据库的测试值(很抱歉,我不得不使用一个图像托管站点,我没有足够的声誉在这个站点上发布):

现在,我在NetBeans中创建了一个界面,如下所示:

我想做的是,当我在文本框(例如“1”)中输入一个值时,表中应该显示所有idfood为“1”的记录。我将感谢任何帮助

以下是我的代码(名为“搜索”的按钮):


请注意:使用
PreparedStatement
,而不是手动将参数添加到查询中
“…idfood=”+a+““
易受SQL注入攻击。请使用而不是像这样传递
+a+
,因为它极易受SQL注入攻击。顺便问一下,您有什么问题?您在运行代码时遇到问题吗?当我运行上述代码时,会出现以下错误:“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的mysql服务器版本对应的手册,以了解使用near‘keys WHERE idfood=‘1’(第1行)的正确语法。我们需要表架构。
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

    String a = jTextField1.getText();

    try {

        Statement s = DB.getConnection().createStatement();
        ResultSet rs = s.executeQuery("SELECT * FROM keys WHERE idfood = '"+a+"'");

        while(rs.next()){

            Vector v = new Vector();
            v.add(rs.getString("idfood"));
            v.add(rs.getString("iditem"));
            v.add(rs.getString("amount"));

            dtm.addRow(v);
        }
    } 

    catch (Exception e) {
        e.printStackTrace();
    }