这个带有计算的数据库更新命令正确吗?

时间:2019-10-26 14:21:33

标签: java sql

我想将数据库中的ArtikelAnzahl(文章数)设置为术语,该术语将从Java GUI中获得。

因此,SQL命令字符串应类似于:

    "update warenliste set Anzahl=Anzahl+"anzahl"where Artikel_ID="+arikel_ID;    

其中:

  • warenliste是表,Anzahl是应该更新的公共区。
  • 数据库中的文章编号应添加到我们将从GUI中获得的编号中。

此命令正确吗?我昨天才刚刚学习SQL,不幸的是,它还不是很熟练。

public void setArtikelAnzahl(int anzahl, int arikel_ID) {           
        try {
            String query = "update warenliste set Anzahl=Anzahl+"anzahl"where Artikel_ID="+arikel_ID;
            rs= st.executeQuery(query);             
        }
        catch(Exception e) {
            System.out.println(e);
        }    
    }

1 个答案:

答案 0 :(得分:0)

SQL部分

如果artikel_idanzahl都是数字(并且是anzahl而不是artikeanzahl),则查询的SQL部分看起来很好。

让我们实例化一个虚构的文章1的数量为27的语句:

update warenliste set Anzahl=Anzahl+27 where Artikel_ID=1; 

如果您使用以下模式测试此here,它将很正常:

create table warenliste (artikel_ID numeric, 
                         bezeichnung varchar(100),
                         anzahl numeric);

insert into warenliste values (1,"Schraubenzieher", 1050);
insert into warenliste values (2,"Hammer", 10347);

Java部分

但是Java部分有一些问题。首先,您需要更正语句以使Java代码得以编译。您还需要在结果字符串中添加缺少的空格:

   String query = "update warenliste set Anzahl=Anzahl+"+anzahl+" where Artikel_ID="+arikel_ID;
                                                        ^      ^ ^

由于您对SQL还不太熟悉,建议您在执行之前先display query字符串。只是为了验证它是否符合您的期望。

现在,如果ariktel_id是字符串而不是数字,则可能必须在查询字符串中的变量周围添加缺少的引号。

不是必需的,但是我建议在构建查询字符串时,在SQL语句中使用大写字母。这将有助于读取Java代码,尤其是当您将SQL字符串与Java变量混合在一起(例如此处)时。