0
我有一个表,如下所示:Java的插入或SQL逻辑更新
mysql> select * from category;
+-------------+----------+------+------+------+------+------+------+------+------+------+-----------------+
| category_id | T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | vendor_brand_id |
+-------------+----------+------+------+------+------+------+------+------+------+------+-----------------+
| 12 | Popcorn | rgp | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3000 |
我试图插入新行的爆米花桶,使得它看起来是这样的:
mysql> select * from category;
+-------------+----------+------+------+------+------+------+------+------+------+------+-----------------+
| category_id | T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | vendor_brand_id |
+-------------+----------+------+------+------+------+------+------+------+------+------+-----------------+
| 12 | Popcorn | rgp | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3000 |
| 13 | Popcorn | Bucket | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 3000 |
但是这是更新现有的行。
请问有人能告诉我什么是错?
String vendor_brand_id ="3000";
String reqstr ="Popcorn";
String value="Bucket";
sqlselect = "select category_id from category where T1 = ? AND T2!=NULL AND vendor_brand_id = ?";
selectpst = dbConnection.prepareStatement(sqlselect);
selectpst.setString(1, valuess[0]);
selectpst.setString(2, vendor_brand_id);
resultset = selectpst.executeQuery();
if(resultset.next())
{
sql= "select category_id from category where T1 = ? AND T2=? AND vendor_brand_id = ?";
selectpst2 = dbConnection.prepareStatement(sql);
selectpst2.setString(1, valuess[0]);
selectpst2.setString(2, value);
selectpst2.setString(3, vendor_brand_id);
resultset2 = selectpst2.executeQuery();
if(resultset2.next())
{
}
else
{
sql = "Insert into category (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,vendor_brand_id) values ('"+valuess[0]+"','"+value+"',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"+vendor_brand_id+") ";
updateStatement.executeUpdate(sql);
}
}
else
{
sql = "update category set T2 = '"+value+"' where T1 ='"+valuess[0]+"' AND vendor_brand_id = "+vendor_brand_id+" " ;
updateStatement.executeUpdate(sql);
}
任何'UNIQUE'指数在桌子上? – hexafraction 2014-10-27 20:47:17
谢谢,但根据表设计,没有什么我可以依靠 – Kiran 2014-10-27 20:48:15
首先想到:而不是“AND T2!= NULL”,尝试“AND T2 IS NOT NULL” – 2014-10-27 20:48:23