通用sql生成c 介面指令碼

2021-09-03 03:35:57 字數 1037 閱讀 1687

之前寫過乙個 sql 文字轉換為 c++ sqlite 資料庫介面的指令碼

但是發現, 只要換一種資料庫, 就需要專門為這個資料庫寫乙個指令碼, 但是明明都是一樣的東西, 所以就想到把介面抽象出來, 然後只寫一次指令碼, 如果要更換資料庫, 只需要寫一下按照定義的資料庫介面實現虛函式, 就可以直接使用指令碼生成的介面 (我已經寫了兩個驅動了, 分別是 mysql 和 sqlite 的  -> 這兩個驅動直接依賴的官方 api)

介面定義: 

mysql 驅動: 

sqlite 驅動: 

測試原始碼:

最重要的就是下面兩句

sql::isql *sql = new sql::csqlitesql();

user_info::cdbhandler dbhandler("test.db", sql);

第一行: sql::csqlitesql() 就是 我寫的sqlite的驅動

第二行: 表示將 驅動註冊到 介面類中 (其中 user_info::cdbhandler 就是指令碼生成的介面類)

例:  新增使用者

user_info::cadduserinfoinput input;

input.setusername("jake");

input.setuserage(30);

dbhandler.adduserinfo(input);

指令碼所在位置:

執行方式:

3. 進入到  , 這個目錄下面有乙個 example

執行:

python main.py -f ./example_sql/user_info.sql -ho ./example_sql/output/include -co ./example_sql/output/source -create
說明:

-f: 後面接 *.sql 的檔案路徑

-ho: 指定標頭檔案的資料目錄

-co: 指定原始檔的資料庫目錄

-create/-update: 建立/更新

生成sql指令碼

生成資料庫指令碼 sql2000企業管理器 右鍵要匯出的資料庫 所有任務 生成sql指令碼 常規 裡選擇 生成全部物件指令碼 在指令碼檔案中包含說明性標題 選上 設定格式 裡,將 包含擴充套件屬性 選上 選項 中,將 表指令碼選項 中的內容全部選擇上 選項 中,安全性選項 是決定是否要包含建立資料庫...

sql語句生成sql指令碼

sql語句有一種特別的用法,相信很多人還不知道,我也是後來學到的,因此拿來跟大家分享下 生成sql指令碼 舉個例子 select 1 from student 如果表中有資料的話,你就會發現查詢的結果會是 根據這個原理,我們可以用來生成sql指令碼,以下就是例項 例項1 乙個簡單的例子 select...

SpringBoot生成sql指令碼

最近專案新增加了乙個匯入匯出的功能,起因是因為專案需要遷移環境,專案的業務需要所有的頁面都是可配置的,當我在測試環境配置好一套頁面,並且測試無誤後,需要把我配置好的這套頁面的資料遷移到生產環境上,由此提出了這個需求。當然這個功能也並不是很難做。public void outputsql throws...