欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++ sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作

 更新時(shí)間:2023年08月01日 10:39:06   作者:TheLightOfStars  
這篇文章主要介紹了c++ sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作

如果要進(jìn)行大量的操作,比如要插入10000條數(shù)據(jù),如果逐條執(zhí)行SQL語(yǔ)句,則消耗的時(shí)間非常長(zhǎng)。

采用事務(wù)的方式批量處理,可以極大程度提升操作速度(我用1000條記錄實(shí)驗(yàn)了一下,速度提高了500倍以上)。

sqlite3_exec可以執(zhí)行任何sql語(yǔ)句,包括事務(wù)(“BEGIN TRANSACTION”)、回滾(“ROLLBACK”)和提交(“COMMIT”)等等

Eg1:

//插入條數(shù)據(jù)(在Begin和Commit之間批量操作,可以大幅度提高效率)
result =sqlite3_exec(db, "BEGIN;",0, 0, 0);
for (int i=0; i<10000; i++)
{
    //插入一條數(shù)據(jù)
    result = sqlite3_exec(db,
        "INSERT INTOMyTable (MyText, MyDate, MyTime, MyFloat) VALUES ('---上班好遠(yuǎn)!', '2012-03-23', '9:00:00', 1000);",
        0, 0, 0);
}
result =sqlite3_exec(db, "COMMIT;",0, 0, 0); .

Eg.2

string strSql;  
strSql+="begin;\n";  
for (int i=0;i<100;i++)  
{  
    strSql+="insert into MyTable values(null,'heh');\n";  
}  
strSql+="commit;";  
//cout<<strSql<<endl;  
nResult = sqlite3_exec(db,strSql.c_str(),NULL,NULL,&errmsg);  

sqlite3常用指令

SQLite 是一款輕量級(jí)的數(shù)據(jù)庫(kù),它的設(shè)計(jì)目標(biāo)是嵌入式的,但它也可以在大型系統(tǒng)中使用。SQLite 提供了一系列的命令來(lái)幫助用戶(hù)進(jìn)行數(shù)據(jù)庫(kù)操作。

以下是 SQLite 的一些常用指令:

建立數(shù)據(jù)表

使用 CREATE TABLE 命令來(lái)創(chuàng)建一個(gè)新的數(shù)據(jù)表。

CREATE TABLE table_name(field1 type1, field2 type2, ...);

例如,創(chuàng)建一個(gè)包含學(xué)號(hào)和姓名的學(xué)生信息表:

CREATE TABLE student_info(stu_no INTEGER PRIMARY KEY, name TEXT);

添加數(shù)據(jù)記錄

使用 INSERT INTO 命令向數(shù)據(jù)表中插入新的記錄。

INSERT INTO table_name(field1, field2, ...) VALUES(val1, val2, ...);

例如,向?qū)W生信息表中添加一條新的記錄:

INSERT INTO student_info(stu_no, name) VALUES(0001, 'Alex');

修改數(shù)據(jù)記錄

使用 UPDATE 命令來(lái)修改數(shù)據(jù)表中的記錄。

UPDATE table_name SET field1=val1, field2=val2 WHERE expression;

例如,修改學(xué)生信息表中學(xué)號(hào)為 0001 的記錄:

UPDATE student_info SET stu_no=0001, name='Hence' WHERE stu_no=0001;

刪除數(shù)據(jù)記錄

使用 DELETE FROM 命令來(lái)刪除數(shù)據(jù)表中的記錄。

DELETE FROM table_name WHERE expression;

例如,刪除學(xué)生信息表中學(xué)號(hào)為 0001 的記錄:

DELETE FROM student_info WHERE stu_no=0001;

查詢(xún)數(shù)據(jù)記錄

使用 SELECT 命令來(lái)查詢(xún)數(shù)據(jù)表中的記錄。

SELECT columns FROM table_name WHERE expression;

例如,查詢(xún)學(xué)生信息表中所有的記錄:

SELECT * FROM student_info;

建立索引

使用 CREATE INDEX 命令來(lái)為數(shù)據(jù)表中的字段創(chuàng)建索引。

CREATE INDEX index_name ON table_name(field);

例如,為學(xué)生信息表中的 stu_no 字段創(chuàng)建一個(gè)索引:

CREATE INDEX student_index ON student_info(stu_no);

刪除數(shù)據(jù)表或索引

使用 DROP TABLEDROP INDEX 命令來(lái)刪除數(shù)據(jù)表或索引。

DROP TABLE table_name;
DROP INDEX index_name;

以上就是 SQLite 的一些常用指令,通過(guò)這些指令,你可以進(jìn)行數(shù)據(jù)表的創(chuàng)建、記錄的添加、修改、刪除,以及索引的創(chuàng)建和刪除等操作。

當(dāng)然,除了上述的基本指令,SQLite 還有許多其他的指令和功能可以幫助你更好地管理和操作你的數(shù)據(jù)庫(kù)。以下是一些額外的 SQLite 指令:

ALTER TABLE

ALTER TABLE 命令用于修改現(xiàn)有的數(shù)據(jù)庫(kù)表。

你可以使用它來(lái)添加、修改或刪除表中的列,或者改變表的名稱(chēng)。

ALTER TABLE table_name ADD COLUMN column_name column_type;
ALTER TABLE table_name RENAME TO new_table_name;

JOIN

JOIN 命令用于將兩個(gè)或更多的表通過(guò)相互關(guān)聯(lián)的列連接起來(lái)。

SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;

GROUP BY

GROUP BY 命令用于將選定的列中具有相同值的行組合在一起。

SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;

HAVING

HAVING 命令用于過(guò)濾 GROUP BY 命令的結(jié)果。它類(lèi)似于 WHERE 命令,但是用于聚合函數(shù)。

SELECT column1, COUNT(column2) FROM table_name GROUP BY column1 HAVING COUNT(column2) > value;

TRANSACTION

SQLite 支持事務(wù)處理,這是一種將多個(gè) SQL 操作組合成一個(gè)單一的原子操作的方法。

你可以使用 BEGIN TRANSACTION,COMMITROLLBACK 命令來(lái)控制事務(wù)。

BEGIN TRANSACTION;
INSERT INTO table_name VALUES (...);
UPDATE table_name SET ...;
COMMIT;

PRAGMA

PRAGMA 命令用于獲取或設(shè)置 SQLite 數(shù)據(jù)庫(kù)的內(nèi)部參數(shù)。

例如,你可以使用 PRAGMA 命令來(lái)獲取數(shù)據(jù)庫(kù)的版本信息,或者設(shè)置數(shù)據(jù)庫(kù)的同步模式。

PRAGMA user_version;
PRAGMA synchronous = OFF;

以上就是一些 SQLite 的高級(jí)指令,通過(guò)這些指令,你可以更好地管理和操作你的 SQLite 數(shù)據(jù)庫(kù)。

總結(jié)

好了,這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入C中常用的三種排序方法總結(jié)以及探討分析

    深入C中常用的三種排序方法總結(jié)以及探討分析

    本篇文章是對(duì)C中常用的三種排序方法總結(jié)以及探討分析的概述,需要的朋友參考下
    2013-05-05
  • 超詳細(xì)的c語(yǔ)言字符串操作函數(shù)教程

    超詳細(xì)的c語(yǔ)言字符串操作函數(shù)教程

    字符串是一種重要的數(shù)據(jù)類(lèi)型,有零個(gè)或多個(gè)字符組成的有限串行,下面這篇文章主要給大家介紹了關(guān)于c語(yǔ)言字符串操作函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • C語(yǔ)言指針教程示例詳解

    C語(yǔ)言指針教程示例詳解

    這篇文章主要為大家介紹了C語(yǔ)言指針教程的示例詳解
    2022-02-02
  • C++實(shí)現(xiàn)基于時(shí)序公平的讀寫(xiě)鎖詳解

    C++實(shí)現(xiàn)基于時(shí)序公平的讀寫(xiě)鎖詳解

    讀寫(xiě)鎖與普通的互斥鎖的區(qū)別在于有兩種上鎖方式:讀鎖和寫(xiě)鎖,不用的用戶(hù)對(duì)同一個(gè)讀寫(xiě)鎖獲取讀鎖是非互斥的,其他情況則是互斥的,本文小編將給大家詳細(xì)介紹C++實(shí)現(xiàn)基于時(shí)序公平的讀寫(xiě)鎖,需要的朋友可以參考下
    2023-10-10
  • Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(主要Windows、簡(jiǎn)要Linux)

    Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(主要Windo

    這篇文章主要介紹了Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++(主要Windows、簡(jiǎn)要Linux),本文通過(guò)實(shí)例截圖給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言 MD5的源碼實(shí)例詳解

    C語(yǔ)言 MD5的源碼實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言 MD5的源碼實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C++ push_back()函數(shù)使用詳解

    C++ push_back()函數(shù)使用詳解

    這篇文章主要介紹了C++ push_back()函數(shù)使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • C語(yǔ)言函數(shù)超詳細(xì)講解上篇

    C語(yǔ)言函數(shù)超詳細(xì)講解上篇

    函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語(yǔ)句。每個(gè)?C?程序都至少有一個(gè)函數(shù),即主函數(shù)?main()?,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù),函數(shù)我們分兩篇來(lái)講解,接下來(lái)開(kāi)始第一篇
    2022-04-04
  • C++詳細(xì)講解繼承與虛繼承實(shí)現(xiàn)

    C++詳細(xì)講解繼承與虛繼承實(shí)現(xiàn)

    這篇文章主要介紹了Java中的繼承詳情,繼承是面向?qū)ο笕筇卣髦?,可以使得子?lèi)具有父類(lèi)的屬性和方法,還可以在子類(lèi)中重新定義,以及追加屬性和方法,下文介紹需要的朋友可以參考下
    2022-04-04
  • C++面試八股文之了解auto關(guān)鍵字

    C++面試八股文之了解auto關(guān)鍵字

    這篇文章主要為大家介紹了C++面試八股文之了解auto關(guān)鍵字問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論