当前位置: 代码网 > it编程>数据库>大数据 > SQLite数据库中如何获取新插入数据的自增长ID

SQLite数据库中如何获取新插入数据的自增长ID

2024年05月26日 大数据 我要评论
sqlite简介本教程帮助您了解什么是 sqlite,它与 sql 之间的不同,为什么需要它,以及它的应用程序数据库处理方式。sqlite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com