c++ sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作
sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作
如果要進行大量的操作,比如要插入10000條數(shù)據(jù),如果逐條執(zhí)行SQL語句,則消耗的時間非常長。
采用事務(wù)的方式批量處理,可以極大程度提升操作速度(我用1000條記錄實驗了一下,速度提高了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 ('---上班好遠!', '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è)計目標是嵌入式的,但它也可以在大型系統(tǒng)中使用。SQLite 提供了一系列的命令來幫助用戶進行數(shù)據(jù)庫操作。
以下是 SQLite 的一些常用指令:
建立數(shù)據(jù)表
使用 CREATE TABLE 命令來創(chuàng)建一個新的數(shù)據(jù)表。
CREATE TABLE table_name(field1 type1, field2 type2, ...);
例如,創(chuàng)建一個包含學號和姓名的學生信息表:
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;
例如,修改學生信息表中學號為 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;
例如,刪除學生信息表中學號為 0001 的記錄:
DELETE FROM student_info WHERE stu_no=0001;
查詢數(shù)據(jù)記錄
使用 SELECT 命令來查詢數(shù)據(jù)表中的記錄。
SELECT columns FROM table_name WHERE expression;
例如,查詢學生信息表中所有的記錄:
SELECT * FROM student_info;
建立索引
使用 CREATE INDEX 命令來為數(shù)據(jù)表中的字段創(chuàng)建索引。
CREATE INDEX index_name ON table_name(field);
例如,為學生信息表中的 stu_no 字段創(chuàng)建一個索引:
CREATE INDEX student_index ON student_info(stu_no);
刪除數(shù)據(jù)表或索引
使用 DROP TABLE 或 DROP INDEX 命令來刪除數(shù)據(jù)表或索引。
DROP TABLE table_name; DROP INDEX index_name;
以上就是 SQLite 的一些常用指令,通過這些指令,你可以進行數(shù)據(jù)表的創(chuàng)建、記錄的添加、修改、刪除,以及索引的創(chuà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,COMMIT 和 ROLLBACK 命令來控制事務(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SQL Server中的數(shù)據(jù)復(fù)制到的Access中的函數(shù)
SQL Server中的數(shù)據(jù)復(fù)制到的Access中,表的結(jié)構(gòu)相同 不要提用openrowset,因為Access文件和SQL Server不在一臺機器上2008-11-11
C語言 動態(tài)內(nèi)存開辟常見問題解決與分析流程
動態(tài)內(nèi)存是相對靜態(tài)內(nèi)存而言的。所謂動態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存2022-03-03
C語言利用system調(diào)用系統(tǒng)命令行詳情
這篇文章主要介紹了C語言利用system調(diào)用系統(tǒng)命令行詳情,system就是調(diào)用系統(tǒng)命令行,輸入為字符串,然后把這個字符串輸出給命令行,讓命令行執(zhí)行。下文的具體內(nèi)容,需要的小伙伴可以參考一下2022-01-01

