gpt4 book ai didi

SQL 逻辑中的 Java 插入或更新

转载 作者:行者123 更新时间:2023-11-29 12:37:10 25 4
gpt4 key购买 nike

我有一个表格,如下所示:

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

最佳答案

MySQL 处理 NULL in a rather special manner ;摘自文章:“不能使用 =、< 或 <> 等算术比较运算符来测试 NULL”

尝试更改您的第一个 SELECT 语句:

/* Old */
select category_id from category where T1 = ? AND T2!=NULL AND vendor_brand_id = ?

/* New */
SELECT category_id FROM category WHERE T1=? AND T2 IS NOT NULL AND vendor_brand_id=?

关于SQL 逻辑中的 Java 插入或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596547/

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