【发布时间】:2018-03-23 06:46:40
【问题描述】:
我有这两个说法:
db2.Execute(" UPDATE CLICKHISTORY SET " +
" DAYOFYEAR = " + dayOfYear + " , " +
" YEAR = " + year + " , " +
" MONTH = " + month + " , " +
" DAY = " + day + " , " +
" BTNACOUNT = BTNACOUNT + 1 WHERE YYMMDD = " + yymmdd );
db2.Execute(" INSERT INTO CLICKHISTORY " +
" (YYMMDD,DAYOFYEAR,YEAR,MONTH,DAY,BTNACOUNT) " +
" VALUES ( " +
yymmdd + " , " +
dayOfYear + " , " +
year + " , " +
month + " , " +
day + " , " +
"1) WHERE changes() = 0");
我想做的是在运行第二个语句之前检查第一个语句中的 changes() = 0 是否。
谁能告诉我如何将这两个语句组合在一起,以便我可以检查 changes() 的值?
【问题讨论】:
-
第一条语句将更新表中的所有行。第二个不是有效的 SQL。
-
我已经更新了第二个,并将进一步完善和检查。我所展示的只是一个例子。我需要做的是如果它不存在则插入一行,如果存在则更新。我对此进行了研究,如果更新不起作用,最简单的方法似乎是更新,然后插入
-
你可以做
case count(select ...) when 0 then insert else update,虽然这是额外的查询。这就是你要找的吗? -
每个 SQL 驱动程序都应该有一些方法来返回更新的行数(但我不知道你使用的是哪一个)。
-
你是如何连接到数据库的?您可以发布您的连接代码以及您使用的库吗?
Mono.Data.SQLite?
标签: c# .net sqlite xamarin xamarin.forms