【问题标题】:Error in inserting commands in SQL databases using java使用 java 在 SQL 数据库中插入命令时出错
【发布时间】:2015-11-18 06:20:09
【问题描述】:

我需要每天更新 sql 数据库,以了解点击次数和转化次数列的变化。我有每一列的数组。在这个语句中有一个错误。我也找不到错误。请帮助

for(int j=1;j<row;j++){
pst= conn.prepareStatement("INSERT INTO babum_test.l2ttracker SET Clientid='"+Customer_ID[j]+"',Accountname='"+Account[j]"',Dates='"Day[j]"',Clicks='"Clicks[j]"',Impressions='"Impressions[j]"',CTR='"CTR[j]"',Avg_CPC='"Avg_CPC[j]"',Cost='"Costs[j]"',Conversions='"Conversions[j]"',Converted_clicks='"Converted_clicks[j]"',Avg_position='"Avg_position[j]"',Revenue='"Total_Conv_value[j]+"' ON DUPLICATE KEY UPDATE'"+ "'Clicks='"+Clicks[j]"',Impressions='"Impressions[j]"',CTR='"CTR[j]"',Avg_CPC='"Avg_CPC[j]"',Cost='"Costs[j]"',Conversions='"Conversions[j]"',Avg_position='"Avg_position[j]"',Converted_clicks='"Converted_clicks[j]"',Revenue='"Total_Conv_value[j]);
}

【问题讨论】:

  • 1/ 引号 2/ sql 注入 3/ 误用。请阅读prepared statement
  • 我们可以在 INSERT 语句中使用 SET 关键字吗?我从没用过,SET 是 UPDATE 语句,而 INSERT 语句有一个 VALUES 关键字。
  • 除了滥用准备好的语句之外,您使用的是什么 dbms,您遇到了什么错误?看起来您正在使用 IIRC 完全错误的语法 INSERT INTO table SET column = value
  • 他们已经用 R 语言开发了这段代码。现在我需要将其转换为 Java 以作为批处理文件运行。在 R 语言中,他们使用了这个 SQL 命令。 Sql 命令对所有语言都是通用的。所以我在这里用它来插入和更新

标签: java sql


【解决方案1】:

存在三个主要问题:

  1. 你没有在应该使用引号的地方使用引号。

  2. 我不知道有任何数据库使用INSERT ... SET 语句。

  3. 您让自己容易受到 SQL 注入攻击。

必修漫画re #3:

改为:

pst = conn.prepareStatement(
    "INSERT INTO sampletable " +
    "(FirstColumn SecondColumn, Etc) " +
    "VALUES " +
    "(?, ?, ?)"
);
pst.setString(1, "value for first column");
pst.setInt(2, 42);
pst.setDate(3, /*...some date...*/);
pst.execute();

问号是准备好的语句将放置值的占位符。即使参数是字符串,也不要在问号周围加上引号;这是在幕后处理的,也是使用准备好的语句的部分原因。请注意,参数编号从 1 开始,而不是 0。

阅读 SQL 语法以及如何正确使用准备好的语句; this site 可能有用。

【讨论】:

  • 好的。对于插入,我知道这个命令。实际上,该表有两列作为主键。现在我需要覆盖主键 ROW 中显示的数据。这是怎么可能的。例如:数据假定为 dane,223-456-4211,11/2/2015,35, 45,2345 在此语句中的第 2 和第 3 列值是主键。剩余的 25,35,2345 个值将每天更改。我需要每天使用程序更新该值
  • @abhilash.r:您使用UPDATE 语句来做到这一点。阅读 SQL。
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多