gpt4 book ai didi

java - SQL False 命令、Java 代码和 SQL?希望可以有人帮帮我

转载 作者:行者123 更新时间:2023-12-02 09:22:37 25 4
gpt4 key购买 nike

我的 MySQL 代码有问题。我认为问题在于“String artikelname”,我需要在 SQL 中引用它。

String query = "insert into warenliste (Artikel_ID, Artikelname, Anzahl, Hochfrequent) values ("+arikel_ID+", "+artikelname+", "+anzahl+", "+hochfrequent+")"

普通的 SQL 命令是这样的:insert into warenliste (Artikel_ID, Artikelname, Anzahl, Hochfrequent) 值 (123, "name", 5, 0);

-> 这里的“名称”在引号中,但在我的 Java 代码中,由于变量“Artikelname”,我无法在引号中执行此操作。

完整代码:

public void setWareHinzu(int arikel_ID, String artikelname, int anzahl, boolean hochfrequent) {

try {
String query = "insert into warenliste (Artikel_ID, Artikelname, Anzahl, Hochfrequent) values ("+arikel_ID+", "+artikelname+", "+anzahl+", "+hochfrequent+")";
st.executeUpdate(query);

}
catch(Exception e) {
System.out.println(e);
}

}

最佳答案

不能在 SQL 查询中包含这样的输入。想象一下发送的 artikelname 是字符串 whatever';删除数据库 warenliste CASCADE; --.

如果您随后运行代码..您的数据库将被删除。

不可能正确地逃避这个问题。解决方案在于 PreparedStatement:

try (PreparedStatement ps = connection.prepareStatement("INSERT INTO warenliste (Artikel_ID, etc) VALUES (?, ?)")) {
// Note the question marks above: They mark where the variables go. Do not quote them.
ps.setInt(1, artikel_ID);
ps.setString(2, artikelname);
... the other vars go here.
ps.executeUpdate();
}

此外,在 java weWriteVariableNamesLikeThis、not_like_this 中,它是 'artikel' 而不是 arikel,异常包含至少 4 个有趣的信息位,只需使用 e.printStackTrace() 你就会 [A] 抛出去掉 4 个有趣位中的 3 个,并且 [B] 随着代码继续运行,您将得到一连串的错误。解决此问题的正确方法是将您的方法声明为抛出 SQLException。请注意,您的 public static void main 可以(并且应该!)声明为 throws Exception

关于java - SQL False 命令、Java 代码和 SQL?希望可以有人帮帮我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com