在C C 專案中接入LuaSQLite3

2021-07-15 13:50:03 字數 4410 閱讀 4112

將這3個檔案匯入到專案中,並增加乙個標頭檔案lsqlite3.h,

將sqlite3註冊到lua中:

//

// main.cpp

// luaandcpp

//#include

#include "lua.hpp"

#if __cplusplus

extern "c",

};#if __cplusplus

}#endif

int main(int argc, const

char * argv)

lua_pop(m_luastate, 2);

lual_dofile(m_luastate, "/users/forest/documents/luaandcpp/luaandcpp/scripts/database.lua");

lua_close(m_luastate);

return

0;}

在database.lua中:

local sqlite3 = require

"lsqlite3"

print('--->>',sqlite3)

結果--->> table: 0x100400cf0驗證是否能建立資料庫:

local sq = {}

local sqlite3 = require

"lsqlite3"

local db = nil

-- print('--->>',sqlite3)

sq.create_db = function

( path , name )

path = path..name

db = sqlite3.open(path)

endlocal path = "/users/forest/documents/luaandcpp/luaandcpp/"

sq.create_db(path,"config")

return sq

執行之後在指定目錄下建立了config

完善對config資料庫的操作

local sq = {}

local sqlite3 = require

"lsqlite3"

local db = nil

-- 建立資料庫

sq.create_db = function

( path , name )

path = path..name

db = sqlite3.open(path)

end-- 建立表

sq.create_table = function

( table_name )

local str = 'create table '..table_name..' (id integer primary key , content);'

db:exec(str)

end-- 增

sq.insert_info = function

( table_name , key , value )

local str = 'insert into '..table_name..' values('..key..','..'\"'..value..'\"'..');'

print(str)

db:exec(str)

end-- 查詢

sq.select = function

( table_name )

local str = 'select * from '..table_name

local tab = {}

for row in db:nrows(str) do

print(row.id,row.content)

-- tab[row.id] = row.content

if row.id == 1

then

row.content = "rotation"

endlocal index = tonumber(row.id)

local content = tostring(row.content)

table.insert(tab , content)

endfor k,v in

pairs(tab) do

print(k,v)

endreturn tab

end-- 刪除

sq.delete = function

( table_name )

local str = 'delete from '..table_name

db:exec(str)

endlocal path = "/users/forest/documents/luaandcpp/luaandcpp/"

sq.create_db(path,"config")

-- 建立 sceneinfo 表

sq.create_table('sceneinfo')

sq.insert_info('sceneinfo', 1280, "width")

sq.insert_info('sceneinfo', 720, "height")

sq.insert_info('sceneinfo', 1, "scale")

sq.select('sceneinfo')

return sq

執行結果

hello, world!

insert

into sceneinfo values(1280,"width");

insert

into sceneinfo values(720,"height");

insert

into sceneinfo values(1,"scale");

1 scale

720 height

1280 width

1 rotation

2 height

3 width

program ended with exit code: 0

通過終端驗證

sqlite version

3.8.10

.22015-05-20

18:17:19

enter ".help"

for usage hints.

sqlite> .tables

sceneinfo

sqlite> .schema

create table sceneinfo (id

integer primary key , content);

sqlite> select * from sceneinfo;

1|scale

720|height

1280|width

sqlite> .mode line

sqlite> select * from sceneinfo;

id = 1

content = scale

id = 720

content = height

id = 1280

content = width

sqlite> .mode column

sqlite> select * from sceneinfo;

1 scale

720 height

1280 width

sqlite> .headers on

sqlite> select * from sceneinfo;

id content

---------- ----------

1 scale

720 height

1280 width

sqlite>

如何正確的在專案中接入微信JS SDK

但是只支援使用 amd cmd 標準模組載入方法載入。於是我就在npm的官網上找到了發布後的js sdk,支援commonjs的引入方式。npm的位址在 這裡。可以在你的專案中使用如下命令安裝。npm install weixin js sdk 安裝好後可以使用一下兩種方式進行引入。使用common...

如何正確的在專案中接入微信JS SDK

但是只支援使用 amd cmd 標準模組載入方法載入。於是我就在npm的官網上找到了發布後的js sdk,支援commonjs的引入方式。npm的位址在 這裡。可以在你的專案中使用如下命令安裝。npm install weixin js sdk安裝好後可以使用一下兩種方式進行引入。使用commonj...

如何正確的在專案中接入微信JS SDK

但是只支援使用 amd cmd 標準模組載入方法載入。於是我就在npm的官網上找到了發布後的js sdk,支援commonjs的引入方式。npm的位址在 這裡。可以在你的專案中使用如下命令安裝。npm install weixin js sdk 安裝好後可以使用一下兩種方式進行引入。使用common...