[問題][SQL]關於C++使用資料庫
開發平台(Platform): (Ex: Win10, Linux, ...)
Centos7,Fedora30
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC,G++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Mysql資料庫
問題(Question):
想詢問一下在C++中使用SQL比較常用的方法。
目前查到了有 SqLite,SQLAPI++,MySQL Connector/C
完全不知道該使用哪一個...
餵入的資料(Input):
一個帶有屬性、圖片檔名的.txt檔,結構如右: [屬性],檔名\n
資料量約有30萬行
預期結果:
能夠快速查找資料。
補充說明(Supplement):
用讀檔的方式找檔名太慢了,30萬行隨便找找都要超過10分鐘。
所以我才想用資料庫,但是C++的資料庫似乎沒那麼簡單。
希望各位能夠給我點建議~謝謝~。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.73.249 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1572080868.A.9A3.html
→
10/26 17:43,
4年前
, 1F
10/26 17:43, 1F
fgets 去找跟 inString 一樣的字串 (inString 是使用Socket接收)
#define FILELIST "./../db/list.txt"
...(略)
FILE *fp = fopen(FILELIST,"r");
char lineStr[64]; // put every line here.
if(fp){
while(fgets(lineStr, sizeof(lineStr), fp) != NULL){
removeNextLine(lineStr);
if(strcmp(lineStr,inString)==0){
printf("SQLHandler::checkExist: file exist.\n");
fclose(fp);
return 1;
}
}
}else{
printf("error: SQLHandler::checkExist: File open faild.\n");
}
return 0;
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/26/2019 18:48:03
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/26/2019 18:51:26
→
10/26 20:03,
4年前
, 2F
10/26 20:03, 2F
→
10/26 20:28,
4年前
, 3F
10/26 20:28, 3F
→
10/26 20:31,
4年前
, 4F
10/26 20:31, 4F
→
10/26 20:31,
4年前
, 5F
10/26 20:31, 5F
對吼,之前寫Python有做過,突然想起來。
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/26/2019 21:30:35
可是之後如果我要對每一行多加一個屬性的話,那麼不是很麻煩嗎...?
我還是比較想要用資料庫,這樣以後想增加功能比較簡單。
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/26/2019 21:50:58
→
10/26 22:10,
4年前
, 6F
10/26 22:10, 6F
→
10/26 22:11,
4年前
, 7F
10/26 22:11, 7F
→
10/26 22:12,
4年前
, 8F
10/26 22:12, 8F
→
10/26 22:12,
4年前
, 9F
10/26 22:12, 9F
推
10/26 22:40,
4年前
, 10F
10/26 22:40, 10F
→
10/26 22:41,
4年前
, 11F
10/26 22:41, 11F
因為我在建立List.txt,先有30萬個檔案名稱的迴圈,每一個檔案都要確認是否存在
List 裡面。 而且是單執行序,碰上CPU bound
所以複雜度大概是O(n^2)
→
10/26 22:42,
4年前
, 12F
10/26 22:42, 12F
→
10/26 22:43,
4年前
, 13F
10/26 22:43, 13F
→
10/26 22:47,
4年前
, 14F
10/26 22:47, 14F
→
10/26 22:48,
4年前
, 15F
10/26 22:48, 15F
→
10/26 22:55,
4年前
, 16F
10/26 22:55, 16F
我是資管系畢業的,修過一年資料庫,就是不想沒事造輪子,所以才想用資料庫阿...
我的問題是C++的資料庫Library太多種了,不知道哪個比較好用。
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/26/2019 23:32:11
→
10/27 00:11,
4年前
, 17F
10/27 00:11, 17F
→
10/27 00:11,
4年前
, 18F
10/27 00:11, 18F
就是想問其他人都怎麼開...
→
10/27 00:29,
4年前
, 19F
10/27 00:29, 19F
防止重複而已,但是我還沒優化。
→
10/27 00:41,
4年前
, 20F
10/27 00:41, 20F
→
10/27 00:42,
4年前
, 21F
10/27 00:42, 21F
→
10/27 00:42,
4年前
, 22F
10/27 00:42, 22F
→
10/27 00:43,
4年前
, 23F
10/27 00:43, 23F
→
10/27 00:44,
4年前
, 24F
10/27 00:44, 24F
→
10/27 00:45,
4年前
, 25F
10/27 00:45, 25F
→
10/27 00:46,
4年前
, 26F
10/27 00:46, 26F
→
10/27 00:46,
4年前
, 27F
10/27 00:46, 27F
這樣的確快很多,可是我還是想問問大家都怎麼在C++裡用資料庫...
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/27/2019 01:20:31
推
10/27 01:15,
4年前
, 28F
10/27 01:15, 28F
→
10/27 01:21,
4年前
, 29F
10/27 01:21, 29F
→
10/27 01:23,
4年前
, 30F
10/27 01:23, 30F
→
10/27 01:23,
4年前
, 31F
10/27 01:23, 31F
→
10/27 01:44,
4年前
, 32F
10/27 01:44, 32F
→
10/27 01:45,
4年前
, 33F
10/27 01:45, 33F
我其實是在練習寫Socket,這是伺服器端的程式。(先不要考慮安全性)
我希望Client端能夠傳送"g_l"時,能夠製作出檔案清單並回傳。
傳送"r_1111"時,能夠收到名稱為1111的圖片。
還有,假設未來我想搜尋屬性有"雙馬尾"及"獸耳"的圖片,之後能夠快速的製作出清單。
未來練習OpenCV的時候,可以增加欄位,把圖片是否有人臉、圖片的色調都加進去。
現在只是卡在造輪子有點麻煩,但是又不太清楚C++怎麼用資料庫而已。
※ 編輯: zo6596001 (114.45.73.249 臺灣), 10/27/2019 02:00:45
推
10/27 10:20,
4年前
, 34F
10/27 10:20, 34F
→
10/27 10:22,
4年前
, 35F
10/27 10:22, 35F
→
10/29 23:27,
4年前
, 36F
10/29 23:27, 36F
→
10/29 23:28,
4年前
, 37F
10/29 23:28, 37F
→
11/25 15:07,
4年前
, 38F
11/25 15:07, 38F