【发布时间】:2017-09-30 23:56:30
【问题描述】:
我正在使用 Google SQL。我有一个程序,如果数据库中有相同的用户名,用户可以更改数据库的数据。用户正在使用 POST 将他们的信息发布到数据库。在参考了几个 StackOverFlow 问题和答案后,我设法找到了下面的代码,但它不起作用。
try{
Class.forName("com.mysql.jdbc.GoogleDriver");
conn = DriverManager.getConnection(DB_URL);
String sql = "INSERT INTO 'data' ('username', 'UUID', 'tenant_id', 'site_id')"
+ "VALUES(?, ?, ?, ?)"
+ "ON DUPLICATE KEY UPDATE"
+ "UUID = VALUES(UUID), tenant_id = VALUES(tenant_id), site_id = VALUES(site_id)";
stat = conn.prepareStatement(sql);
stat.setString(1, UserName1);
stat.setString(2, UUID1);
stat.setString(3, Tenant_ID1);
stat.setString(4, Site_ID1);
stat.executeUpdate();
stat.close();
conn.close();
}
我的代码可以在没有ON DUPLICATE KEY UPDATE 的情况下工作,但在添加之后,它变得无法工作。我还是 Java 和 SQL 的新手,并准备在这里接受用户的任何意见。谢谢大家的回答。
【问题讨论】:
-
你现在遇到的错误是什么
-
嗨@MohanaPriyan 我没有收到任何错误。当用户名相同时,我无法更改数据库中的数据。
-
我认为,您需要在“重复键更新”之后留出空间
-
UPDATE" + " UUID之间需要一个空格 -
嗨。 MohanaPriyan 和 YCF_L 首先,在说您的两个答案都不起作用之前,我想为没有进行进一步的故障排除而道歉。在我做了一些故障排除后,我意识到错误是
'data' ('username', 'UUID', 'tenant_id', 'site_id')应该是data(username, UUID, tenant_id, site_id)以及 UPDATE 和 UUID 之间的空格。非常抱歉,感谢您的建议。
标签: java mysql sql google-app-engine google-cloud-sql