全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C# SQLite序列操作实现方法详解

本文实例讲述了C# SQLite序列操作实现方法。分享给大家供大家参考,具体如下:

sqlite 不能直接创建自定义函数,不能像 sql server中那样方便创建并使用。不过我们照样可以创建它,创建成功后,我们照样可以随心所欲(比如批量更新等)

序列是一个数据库中很常用的操作,在其它关系型数据库创建是相当简单的,但Sqlite不是很方便,因为它不能直接创建自定义函数

1.先创建一个表示序列的表:

CREATE TABLE SEQUENCE (
SEQ_NAME      VARCHAR(50) NOT NULL,
MIN_VAL        DECIMAL(12,0) NOT NULL,
CURRENT_VAL    DECIMAL(12,0) NOT NULL,
MAX_VAL        DECIMAL(12,0) NOT NULL DEFAULT 1,
INCREMENT      INT NOT NULL DEFAULT 1,
PRIMARY KEY (SEQ_NAME)
);

定义序列的最小值、最大值、步长、序列的名称以及当前值

2.创建触发器

CREATE TRIGGER [SEQ_RESET_TRG]
AFTER UPDATE
ON [SEQUENCE]
FOR EACH ROW
begin
    UPDATE SEQUENCE SET CURRENT_VAL=MIN_VAL WHERE CURRENT_VAL-INCREMENT>=MAX_VAL;
end;

当当前值大于最大值时,重置为最小值,达到序号循环使用的目的。

在C#中使用代码创建函数,SqliteHelper 是访问Sqlite的公共类库,在前面的文章《C#操作SQLite数据库帮助类详解》中有介绍。

3.获取当前序列值

[SQLiteFunction(Name = "GetCurrentValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class GetCurrentValue : SQLiteFunction
{
    public override object Invoke(object[] args)
    {
      Dictionary<String, String> data = new Dictionary<string, string>();
      data.Add("V_SEQ_NAME", args[0].ToString());
      string sql = "SELECT CURRENT_VAL FROM SEQUENCE WHERE SEQ_NAME = @V_SEQ_NAME; ";
      return SqliteHelper.ExecuteScalar(sql,data);
    }
}

4.获取下一个序列值

[SQLiteFunction(Name = "GetNextValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class GetNextValue : SQLiteFunction
{
    public override object Invoke(object[] args)
    {
      Dictionary<String, String> data = new Dictionary<string, string>();
      data.Add("V_SEQ_NAME", args[0].ToString());
      string sql = "UPDATE SEQUENCE SET CURRENT_VAL = CURRENT_VAL + INCREMENT WHERE SEQ_NAME = @V_SEQ_NAME; ";
      SqliteHelper.ExecuteNonQuery(sql, data);
      return SqliteHelper.ExecuteScalar(string.Format("SELECT GetCurrentValue('{0}')",args[0].ToString()),null);
    }
}

5.设置当前序列值

[SQLiteFunction(Name = "SetValue", Arguments = 2, FuncType = FunctionType.Scalar)]
public class SetValue : SQLiteFunction
{
    public override object Invoke(object[] args)
    {
      Dictionary<String, String> data = new Dictionary<string, string>();
      data.Add("V_SEQ_NAME", args[0].ToString());
      data.Add("V_VALUE", args[1].ToString());
      string sql = "UPDATE SEQUENCE SET CURRENT_VAL = @V_VALUE WHERE SEQ_NAME= @V_SEQ_NAME; ";
      SqliteHelper.ExecuteScalar(sql, data);
      return SqliteHelper.ExecuteScalar(string.Format("SELECT GetCurrentValue('{0}')", args[0].ToString()), null);
    }
}

6.测试:

在序列表SEQUENCE中添加一行数据

定义序列名称为PURCHASE_IN_ORDER,最小值为2000,当前值为2000,最大值值为9999,步长为1.

执行语句:

string sql = string.Format("Select GetNextValue('PURCHASE_IN_ORDER')");
SqliteHelper.ExecuteNonQuery(sql,null);

去数据库中查看当前值是否增加

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见数据库操作技巧汇总》、《C#常见控件用法教程》、《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。


# C#  # SQLite  # 序列  # C# SQLite事务操作方法分析  # C#操作SQLite数据库帮助类详解  # c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)  # C#解决SQlite并发异常问题的方法(使用读写锁)  # C#操作SQLite数据库之读写数据库的方法  # C#操作SQLite数据库方法小结(创建  # 连接  # 插入  # 查询  # 删除等)  # C#简单查询SQLite数据库是否存在数据的方法  # C#简单访问SQLite数据库的方法(安装  # 查询等)  # C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法  # C#/.Net 中快速批量给SQLite数据库插入测试数据  # C#操作SQLite方法实例详解  # C#中增加SQLite事务操作支持与使用方法  # 程序设计  # 值为  # 自定义  # 是一个  # 最小值  # 操作技巧  # 相关内容  # 中有  # 感兴趣  # 数据结构  # 给大家  # 因为它  # 在前面  # 更多关于  # 很方便  # 数据库中  # 所述  # 创建一个  # 随心所欲  # 能像 


相关文章: 浅析上传头像示例及其注意事项  如何在IIS7中新建站点?详细步骤解析  如何快速生成ASP一键建站模板并优化安全性?  如何快速生成可下载的建站源码工具?  建站之星各版本价格是多少?  如何用VPS主机快速搭建个人网站?  已有域名和空间如何搭建网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  深圳网站制作平台,深圳市做网站好的公司有哪些?  盐城做公司网站,江苏电子版退休证办理流程?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  韩国服务器如何优化跨境访问实现高效连接?  Swift中swift中的switch 语句  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何在腾讯云服务器上快速搭建个人网站?  微课制作网站有哪些,微课网怎么进?  已有域名能否直接搭建网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  淘宝制作网站有哪些,淘宝网官网主页?  如何在企业微信快速生成手机电脑官网?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  家庭建站与云服务器建站,如何选择更优?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何确保西部建站助手FTP传输的安全性?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  怀化网站制作公司,怀化新生儿上户网上办理流程?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  建站中国官网:模板定制+SEO优化+建站流程一站式指南  购物网站制作公司有哪些,哪个购物网站比较好?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  建站主机助手选型指南:2025年热门推荐与高效部署技巧  建站之星安装后如何配置SEO及设计样式?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何制作算命网站,怎么注册算命网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何高效配置香港服务器实现快速建站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  建站三合一如何选?哪家性价比更高?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何在万网开始建站?分步指南解析  如何用搬瓦工VPS快速搭建个人网站?  如何选择高效可靠的多用户建站源码资源?  香港服务器部署网站为何提示未备案?  桂林网站制作公司有哪些,桂林马拉松怎么报名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。