sqlite 简介
本教程帮助您了解什么是 sqlite,它与 sql 之间的不同,为什么需要它,以及它的应用程序数据库处理方式。
sqlite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 sql 数据库引擎。sqlite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。sqlite 源代码不受版权限制。
什么是 sqlite?
sqlite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 sql 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
就像其他数据库,sqlite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。sqlite 直接访问其存储文件。
sqlite数据库中有一有列名为id的自增列,项目需求要在向数据库在插入新数据的同时返回新插入数据行的id。
我这里用事务,把插入和查询语句通过executereader一起提交,返回dbdatareader。
接下来介绍sqlite数据库中如何获取新插入数据的自增长id,代码如下所示:
实现代码
public bool insert(string topic, string key, string value, out int id)
{
dbproviderfactory factory = sqlitefactory.instance;
using (dbconnection conn = factory.createconnection())
{
conn.connectionstring = _connectionstring;
conn.open();
dbcommand cmdinsert = conn.createcommand();
cmdinsert.parameters.add(cmdinsert.createparameter());
cmdinsert.parameters.add(cmdinsert.createparameter());
cmdinsert.parameters.add(cmdinsert.createparameter());
dbtransaction trans = conn.begintransaction();
try
{
cmdinsert.commandtext = "insert into [{0}] ([topic],[key],[value]) values (?,?,?);select last_insert_rowid() from [{0}]";
cmdinsert.commandtext = string.format(cmdinsert.commandtext, _messagetablename);
cmdinsert.parameters[0].value = topic;
cmdinsert.parameters[1].value = key;
cmdinsert.parameters[2].value = value;
dbdatareader reader = cmdinsert.executereader();
trans.commit();
if (reader.read())
{
id = int.parse(reader[0].tostring());
reader.close();
return true;
}
else
{
saec_log4net.log.error("insert message to db fail");
id = 0;
return false;
}
}
catch (exception e)
{
trans.rollback();
saec_log4net.log.error(e.tostring());
id = 0;
return false;
}
}
}到此这篇关于sqlite数据库中获取新插入数据的自增长id的文章就介绍到这了,更多相关sqlite新插入数据自增长id内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论