C/C++ 學習筆記 002 – Dev C + MySQL 綜合使用經驗
前言
這是在 Windows 下的 Dev C + MySQL 的一些使用經驗,當然其中 MySQL 的經驗不只是適用於 Dev C ,其他平台的 MySQL 當然也適用。
如果你想知道如何在 Dev C 下設定好關於 MSQL 的編譯與連結,請參考網頁:
Dev C++ 參數 main by kowala’s home
經驗一
Dev C 內要使用 MySQL 時一定要加 #include <winsock.h> ,不然會出現錯誤
不能只有 #include <stdio.h> 、 #include <mysql.h>
錯誤訊席會在編譯時,表示:
- 268 C:\Dev-Cpp\include\mysql_com.h syntax error before “SOCKET”
- 268 C:\Dev-Cpp\include\mysql_com.h [Warning] no semicolon at end of struct or union
- 304 C:\Dev-Cpp\include\mysql_com.h syntax error before ‘}’ token
- 304 C:\Dev-Cpp\include\mysql_com.h [Warning] type defaults to `int’ in declaration of `NET’
…類似這種訊息。
經驗二、
為這個搞好久, MySQL 雖然支援大筆資料寫入,例如、mediumtext 可以寫入千萬個字元, 甚至 longtext寫入十億個,但是在 MySQL 的基本設定檔 my.cnf (my.ini) 裡頭,有一個值叫做 max_allowed_packet,這個值決定了你的 SQL 語句一次動作內最大的操作量。
所以若寫入的字元的數量超過此值,就一定無法寫入,舉例來說,若你想把系統的一個log檔寫入某個型態為 longtext 的欄位,可該文字檔 是 10MB 的話,則max_allowed_packet 至少要大於 10M。
設定檔案的名稱,Linux 下是my.cnf , Windows 是 my.ini
經驗三、
承上經驗二,設定檔內,預設沒有max_allowed_packet參數,請自己加上
max_allowed_packet = 128M 這樣的一行,結尾不需符號。
經驗四、
別傻傻的用 C 去搞字串問題,先找 MySQL 的操作語句有沒有可用的!XDDD
例如、 %
- SELECT * FROM 資料庫 WHERE 欄位 LIKE “A%” :列出查詢結果中哪些是 A 開頭
- SELECT * FROM 資料庫 WHERE 欄位 LIKE “A___Z” :列出查詢結果中哪些是 A 開頭,Z結尾,中間包含3個字元(請注意這是三個底線)
注意!以上不是正規表示式,是 MySQL 的操作語句裡面的萬用字元規則。雖然 MySQL 也支援正規表示式啦!
請加 RGEXP 關鍵字,例如
- SELECT * FROM 資料庫 WHERE 欄位 RGEXP “[a-z]+” ,找出零或一個小寫英文字母
參考網頁: MySQL:SELECT WHERE LIKE用法 by 陸小K
Leave a Reply