热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何组合在C#中运行的两个SQLite语句?

如何解决《如何组合在C#中运行的两个SQLite语句?》经验,为你挑选了2个好方法。

我有这两个陈述:

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

我想要做的是在运行第二个语句之前检查第一个语句中是否change()= 0.

任何人都可以告诉我如何将这两个语句组合成一个,以便我可以检查changes()的值吗?



1> Steve Chambe..:

假设db2是类型SQLite.SQLiteConnection,您可以使用方法的返回值Execute来查找受影响的行数 - 类似于:

int rowsAffected = db2.Execute("UPDATE...");
if (rowsAffected == 0) {
    rowsAffected = db2.Execute("INSERT...");
}



2> qbik..:

通常,您可以使用分号组合sqlite语句;.

但据我了解,这里真正的问题是:如何在SQLite中有条件地插入值?

您不能使用WHEREINSERT INTO table VALUES(...),但使用可以使用INSERT INTO table SELECT ...语法来代替,并添加一个WHERE条款来选择.

假设我有一张简单的表:scores (name varchar(20), score int).如果还没有更新,我想更新一行或插入新行.

var name = "my team";
var sql  = $"update scores set score = score+1 where name = '{name}';" 
         + $"insert into scores(name, score) select '{name}', 0 where changes() = 0" ;

var cmd = new SQLiteCommand(sql, conn);
cmd.ExecuteNonQuery();

根据您使用的驱动程序,使用的C#方法可能不同 - 我在这里使用System.Data.Sqlite.

您可能还想要了解如何在SQLite中执行Upsert.


@ Alan2 $""和括号是[C#字符串插值]的使用(https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings).它给出了与[string.Format()](https://msdn.microsoft.com/en-us/library/system.string.format(v = vs.110).aspx)相同的结果,但是在(IMO) )更人性化的阅读方式.
推荐阅读
author-avatar
日全食x_354
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有