mSQL (Mini SQL) 是輕量級單用戶資料庫,因體積小、效能好,廣受 Web 開發者青睐。本文記錄 Linux 下安裝、配置、C API 整合與 w3-msql 腳本嵌入 HTML 實戰。
msql-2.0.3.tar.gz)/usr/local):
cp msql-2.0.3.tar.gz /usr/local/
cd /usr/local
tar zxvf msql-2.0.3.tar.gz
/usr/local/Hughes//usr/local/Hughes/msql.conf:
msql_User = database (服務執行身分)admin_User = admin (特權操作身分)chown -R database /usr/local/Hughesdatabase 身分登入,啟動:cd /usr/local/Hughes/bin && ./msql2d &void main(int argc, char *argv[]) {
// 解析表單提交的 username, password_usr
// ...
int sock = msqlConnect(NULL); // 建立本機連接
if (msqlSelectDB(sock, "test") == -1) { // 選擇資料庫
// 輸出選擇失敗
return;
}
char buff[256];
sprintf(buff, "SELECT * FROM registered_user WHERE username='%s'", username);
if (msqlQuery(sock, buff) == -1) { // 執行查詢
// 輸出查詢錯誤
msqlClose(sock);
return;
}
m_result *res = msqlStoreResult(sock);
int numrow = msqlNumRows(res);
if (numrow == 1) {
m_row row = msqlFetchRow(res);
if (strcmp(password_usr, row[2]) == 0) {
// 輸出登入成功
} else {
// 輸出密碼錯誤
}
} else {
// 輸出用戶不存在
}
msqlFreeResult(res);
msqlClose(sock);
}
| 函數 | 用途 |
|---|---|
msqlConnect() | 建立資料庫連接 |
msqlSelectDB() | 選擇資料庫 |
msqlQuery() | 執行 SQL 查詢 |
msqlStoreResult() | 取得結果集指標 |
msqlNumRows() | 結果列數 |
msqlFetchRow() | 取得下一列資料 |
msqlFreeResult() | 釋放結果集 |
msqlClose() | 關閉連接 |
w3-msql CGI 直譯執行<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">
</HEAD>
<BODY>
<?msql
// 解析表單
// 連接、查詢、驗證邏輯同 C API
?>
</BODY>
</HTML>
mSQL 以極簡架構支援 Web 資料庫應用,C API 適合效能敏感場合,w3-msql 適合快速開發。雖非主流,但理解其設計哲學有助於掌握輕量級資料庫核心概念。