本文实例讲述了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小时内与您取得联系。