2013-04-28 58 views
0

其实我是新手在java和SQL中,所以也许这将是愚蠢的问题提前抱歉。我不习惯在一些论坛上写或不喜欢。我更愿意立即回答。无论如何,现在我很无奈,我无法找到它,因为我不知道该找什么,所以我发现这种方式更好。意外的SQL选择异常

所以我没有几个问题,我会将它们分开以便更好地理解。

if (stmt.execute(
         "SELECT * FROM products where ID=" + removeName)) { 
        rs = stmt.getResultSet(); 
    if (!rs.next()) { 
         m = "ID not found."; 
         return m; 
        } 

1.(解决THANK YOU MARC B)在此代码,如果我把我的领域的一些文本(而不是数),它将引发我此异常:的SQLException:在“where子句”未知列“布拉布拉”即使在我的数据库中ID被设置为String,并且在任何地方都是String。

2.(解决了我的大脑开启了一段时间)我正在做我的项目上学,这是仓库系统,有一个收银员正在下单。他将产品添加到订单清单中,然后当订单清单完成时(收银员不会再添加 - 点击订单),它应该从仓库数据库中删除该产品。我想问(再次对不起,我尝试用一​​些actionListeners或数组或其他东西解决它,但正如我告诉我不那么熟练),如果有任何可能性来保存数据(Id,数量)一些变量或某处)以后从数据库中删除它?我虽然这将是很好的保存到数组,但每个按钮点击添加它应该增加数组的索引,但我不知道如何增加我(也许这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"; 
      } 

编辑代码加入到而取值范和ENTRY2后循环进行初始化:

a.add(new Product(entry1, entry2)); 

虽然它被声明为ArrayList的:

ArrayList<Product> a=new ArrayList<>(); 

和类产品看起来是这样的:

public class Product { 
public String name, ID; 
public int quantity; 

public Product(String ID, int quantity){ 
this.ID=ID; 
this.quantity=quantity;} 


public Product(String name, String ID, int quantity){ 
this.name=name; 
this.ID=ID; 
this.quantity=quantity;} 

public String getID(){ 
     return ID;} 


public int getQuantity(){ 
     return quantity;} 


} 

希望编辑将有所帮助。 也许这是一个太大的问题,也许它应该以某种方式划分,但正如我告诉我,我不使用论坛来问只是为了寻找每个答案,我会很不情愿(也是对我的帖子的评论)。再次抱歉,非常感谢!

回答

0

基本SQL:

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

在上面的查询somevalue不是引用,所以它会被解析/解释为表中的一个参照本发明的技术领域。相比之下,'othervalue'与单引号(')被拼成字符串。

+0

是的,但它必须被解释为对字段的引用,因为我的程序正在查找数据库中的产品,其ID与字段中输入的值相同。无论如何,谢谢你,如果我说的是错误的告诉我。 – 2013-04-28 02:35:06

+0

是吗?如果将一个字符串插入到一个sql查询中并且该字符串未被引用,那么数据库引擎将把它解释为一个字段名称。 'product_type = toy'将使数据库引擎在你的表中寻找名为“玩具”的字段。但是如果你在'where product_type ='toy''的地方做数据库引擎扫描表,看看表中任何记录的product_type字段中是否出现“玩具”这个词。 – 2013-04-28 02:38:29

+0

现在我明白了非常感谢! – 2013-04-28 02:40:33