Java 意外的SQL选择异常

Java 意外的SQL选择异常,java,mysql,exception,select,actionlistener,Java,Mysql,Exception,Select,Actionlistener,事实上,我是java和SQL的新手,所以也许这将是一个愚蠢的问题。我不习惯在一些论坛或smth上写作。我希望能马上得到答案。不管怎样,现在我很无助,我在任何地方都找不到它,因为我不知道该找什么,所以我找到了更好的方法 因此,我有几个问题,我会把它们分开,以便更好地理解 if (stmt.execute( "SELECT * FROM products where ID=" + removeName)) {

事实上,我是java和SQL的新手,所以也许这将是一个愚蠢的问题。我不习惯在一些论坛或smth上写作。我希望能马上得到答案。不管怎样,现在我很无助,我在任何地方都找不到它,因为我不知道该找什么,所以我找到了更好的方法

因此,我有几个问题,我会把它们分开,以便更好地理解

    if (stmt.execute(
                        "SELECT * FROM products where ID=" + removeName)) {
                    rs = stmt.getResultSet();
    if (!rs.next()) {
                       m = "ID not found.";
                        return m;
                   }
1.(已解决,谢谢MARC B)在这段代码中,如果我在字段中输入一些文本(而不是数字),它将引发以下异常:SQLException:where子句中的未知列“blabla”,即使在我的数据库中ID设置为String,并且在任何地方都是String

2.(我的大脑被打开了一段时间)我正在学校做我的项目,它是仓库系统,有一个出纳在下订单。他正在将产品添加到订单列表中,然后当订单列表完成时(出纳不再在那里添加-单击订单),它应该将该产品从仓库数据库中删除。我想问(再次抱歉,我试图用一些ActionListener或数组或其他东西来解决这个问题,但我告诉过我我不是很熟练)是否有可能保存订单列表中的数据(Id、数量)(到某个变量或某处),以便以后从数据库中删除它?我认为它会很好地保存到数组中,但每次单击“添加”按钮都会增加数组的索引,但我不知道如何增加I(可能是actionListeners)或其他更好的方法。谢谢你所做的一切

while (rs.next()) {
                String entry = rs.getString(1);
                String entry1 = rs.getString(2);
                int entry2 = rs.getInt(3);
//check if there are enough products in warehouse
                if(quantity>entry2){
                   m+="There are not enough product(s) with ID: "+entry1+"\nin the warehouse.\n";
                   return m;
                }
//add to the order list
                m += "Product name: " + entry + "\n"
                        + "ID: " + entry1 + "\n"
                            + "Quantity: " + quantity + "\n" + "\n";
            }
通过在entry1和entry2初始化后添加到while循环来编辑代码:

a.add(new Product(entry1, entry2));
声明为ArrayList时:

ArrayList<Product> a=new ArrayList<>();
希望编辑能有所帮助。 也许这是一个太大的问题,也许应该以某种方式进行划分,但正如我所说的,我并不是在论坛上提问,只是为了寻找答案,所以对于每一个答案,我都非常感激(也感谢对我帖子的批评)。再次抱歉,非常感谢

基本SQL:

SELECT ...
FROM sometable
WHERE somefield=somevalue, otherfield='othervalue'

上述查询中的
somevalue
没有被引用,因此它将被解析/解释为对表中某个字段的引用。相比之下,
'othervalue'
,带有单引号(
'
)被解释为字符串。

是的,但它必须被解释为对字段的引用,因为我的程序正在数据库中查找ID与字段中输入的值相同的产品。不管怎样谢谢你如果我说的不对告诉我?如果在sql查询中插入一个字符串,而该字符串没有被引用,DB引擎将把它解释为一个字段名
其中product_type=toy
将使数据库引擎在表中查找名为“toy”的字段。但是如果你做了
where product\u type='toy'
db引擎扫描表格,看看表格中任何记录的product\u type字段中是否显示“toy”一词。现在我明白了,非常感谢!
SELECT ...
FROM sometable
WHERE somefield=somevalue, otherfield='othervalue'