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