SQLite數(shù)據(jù)庫中如何獲取新插入數(shù)據(jù)的自增長ID
SQLite 簡介
本教程幫助您了解什么是 SQLite,它與 SQL 之間的不同,為什么需要它,以及它的應(yīng)用程序數(shù)據(jù)庫處理方式。
SQLite是一個軟件庫,實現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。SQLite是一個增長最快的數(shù)據(jù)庫引擎,這是在普及方面的增長,與它的尺寸大小無關(guān)。SQLite 源代碼不受版權(quán)限制。
什么是 SQLite?
SQLite是一個進程內(nèi)的庫,實現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。它是一個零配置的數(shù)據(jù)庫,這意味著與其他數(shù)據(jù)庫不一樣,您不需要在系統(tǒng)中配置。
就像其他數(shù)據(jù)庫,SQLite 引擎不是一個獨立的進程,可以按應(yīng)用程序需求進行靜態(tài)或動態(tài)連接。SQLite 直接訪問其存儲文件。
SQLite數(shù)據(jù)庫中有一有列名為ID的自增列,項目需求要在向數(shù)據(jù)庫在插入新數(shù)據(jù)的同時返回新插入數(shù)據(jù)行的ID。
我這里用事務(wù),把插入和查詢語句通過ExecuteReader一起提交,返回DbDataReader。
接下來介紹SQLite數(shù)據(jù)庫中如何獲取新插入數(shù)據(jù)的自增長ID,代碼如下所示:
實現(xiàn)代碼
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; } } }
到此這篇關(guān)于SQLite數(shù)據(jù)庫中獲取新插入數(shù)據(jù)的自增長ID的文章就介紹到這了,更多相關(guān)SQLite新插入數(shù)據(jù)自增長ID內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
5分鐘快速了解數(shù)據(jù)庫死鎖產(chǎn)生的場景和解決方法
這篇文章主要給大家介紹了關(guān)于如何通過5分鐘快速理解數(shù)據(jù)庫死鎖的相關(guān)資料,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05數(shù)據(jù)庫連接池Druid與Hikari對比詳解
這篇文章主要為大家介紹了數(shù)據(jù)庫連接池Druid與Hikari對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02由拖庫攻擊談口令字段的加密策略(數(shù)據(jù)庫加密)
我不得不慘痛地寫在前面的是,這是一個安全崩盤的時代。過去一年,已經(jīng)證實的遭遇入侵、并導(dǎo)致關(guān)鍵數(shù)據(jù)被竊或者被泄露的公司,包括索尼、世嘉這樣的大型游戲設(shè)備廠商;包括花旗銀行這樣的金融機構(gòu),也包括了RSA這樣的安全廠商2012-01-01