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

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

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

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

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

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

sqlite3_exec可以執(zhí)行任何sql語句,包括事務(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 是一款輕量級的數(shù)據(jù)庫,它的設(shè)計目標(biāo)是嵌入式的,但它也可以在大型系統(tǒng)中使用。SQLite 提供了一系列的命令來幫助用戶進(jìn)行數(shù)據(jù)庫操作。

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

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

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

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

例如,創(chuàng)建一個包含學(xué)號和姓名的學(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 命令來修改數(shù)據(jù)表中的記錄。

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

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

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

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

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

DELETE FROM table_name WHERE expression;

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

DELETE FROM student_info WHERE stu_no=0001;

查詢數(shù)據(jù)記錄

使用 SELECT 命令來查詢數(shù)據(jù)表中的記錄。

SELECT columns FROM table_name WHERE expression;

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

SELECT * FROM student_info;

建立索引

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

CREATE INDEX index_name ON table_name(field);

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

CREATE INDEX student_index ON student_info(stu_no);

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

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

DROP TABLE table_name;
DROP INDEX index_name;

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

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

ALTER TABLE

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

你可以使用它來添加、修改或刪除表中的列,或者改變表的名稱。

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

JOIN

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

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 命令用于過濾 GROUP BY 命令的結(jié)果。它類似于 WHERE 命令,但是用于聚合函數(shù)。

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

TRANSACTION

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

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

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

PRAGMA

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

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

PRAGMA user_version;
PRAGMA synchronous = OFF;

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    C語言指針教程示例詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論