java - 这个数据库更新命令的计算是否正确?

标签 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);
        }    
    }

最佳答案

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 变量混合在一起时,如下所示。

关于java - 这个数据库更新命令的计算是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571615/

相关文章:

java - Guice servlet DSL,过滤除一个 URL 之外的所有 URL

java - 如何显示转动大像素图过程的指示器?

java - 在 Java 8 中从一个 ArrayList 中查找一个字符串作为另一个 ArrayList 字符串的字符序列

php - 从数据库表构建 php 嵌套列表

sql - 根据跨系统数据库中的唯一对象名称创建数字键?

sql - 图数据库与关系数据库中表示的图有何不同?

java - Webview 应用程序检查网络并显示 "no internet connection"(如果没有),并在网络可用时重新加载

java - 如何解决 joda-time 和 org.joda 之间的包冲突

php - SQL注入(inject)mysql_real_escape_string

mysql - 获取按付款类型分组的付款总额