Linux下MySQL數(shù)據(jù)庫開發(fā)技術(shù)
導(dǎo)讀:為了將MySQL數(shù)據(jù)庫集成到用戶的應(yīng)用程序中去,MySQL數(shù)據(jù)庫系統(tǒng)為用戶提供了一個C語言的API庫和一個解釋器:w3—msql,通過C語言的API庫,你可以將MySQL集成到用標(biāo)準(zhǔn)C語言開發(fā)的應(yīng)用程序中去。而有了w3—msql這個工具,你可以通過編寫類C語言腳本語言將mSQL數(shù)據(jù)庫嵌入到html文件中,下面舉一程序?qū)嵗M(jìn)行說明。
下面的程序片段要完成的功能是將瀏覽器頁面上提交上來的用戶名和口令與表registered—user中的用戶名和口令相比較,如果用戶名和口令正確,將在頁面上顯示注冊成功的信息,否則提示用戶注冊失敗。采用C語言實現(xiàn)的方法如下所示:
以下為引用的內(nèi)容:
voidmain(intargc,charargv[])
{
//解析用戶提交上來的用戶名和口令并保存到變量username和password—usr中
…
//創(chuàng)建與本機的mSQL數(shù)據(jù)庫系統(tǒng)的套接字
sock=msqlConnect(NULL);
//選擇數(shù)據(jù)庫test
if(msqlSelectDB(sock,″test″)==-1)
{
//輸出數(shù)據(jù)庫選擇失敗信息
…
}else
{
sprintf(buff,″select??fromregistered—userwhereusername=′%s′″,username);
//以username查詢表registered—user中的記錄
if(msqlQuery(sock,buff)==-1)
{
//輸出查詢失敗的錯誤信息
…
}
//將查詢結(jié)果保存到m—result類型的指針變量res
res=msqlStoreResult();
//得到查詢結(jié)果的記錄數(shù)
numrow=msqlNumRows(res);
if(numrow==1)
{
//得到當(dāng)前記錄,類型為:m_row
row=msqlFetchRow(res);
//將保存在表中的口令和用戶輸入的口令相比較
if(!strcmp(password_ur,row[2]))
{
//輸出注冊成功信息
}else
{
//輸出口令不對的提示信息
}
}else
{
//輸出用戶名輸入出錯信息
}
}
//釋放查詢結(jié)果的指針
msqlFreeResult(res);
//關(guān)閉數(shù)據(jù)庫系統(tǒng)的套接字
msqlClose(sock);
return;
}
以上的例子包含有將MySQL集成到C語言程序中用到的主要函數(shù),這些函數(shù)基本能滿足應(yīng)用程序的需要。如果采用w3—msql能解釋的類C語言嵌入到html文件中,可以達(dá)到同樣的功能。與C語言編寫的CGI程序需要編譯不同,腳本語言不需要編譯,該腳本由MySQL數(shù)據(jù)庫系統(tǒng)提供的CGI程序w3—msql來解釋執(zhí)行。腳本中主要的代碼段如下所示:
以下為引用的內(nèi)容:
〈HTML〉
〈HEAD〉
〈METAHTTP-EQUIV=″Content-Type″CONTENT=″text/html;charset=iso-8859-1″〉
〈/HEAD〉
〈bodyTEXT=″#000000″BACKGROUND=″/icon/back.jpg″topmargin=″10″〉
〈!
//解析用戶提交上來的用戶名和口令并
保存到變量username和password—usr中
…
//創(chuàng)建與本機的mSQL數(shù)據(jù)庫系統(tǒng)的套接字
$sock=msqlConnect();
//選擇數(shù)據(jù)庫test
if(msqlSelectDB($sock,″test″)==-1)
{
//輸出數(shù)據(jù)庫選擇失敗信息
fatal(″錯誤:無法與數(shù)據(jù)庫連接n″);
}else
{
$buff=″select??fromregistered—userwhereusername=′$username′″;
//以username查詢表registered—user中的記錄
if(msqlQuery($sock,$buff)==-1)
{
//輸出查詢失敗的錯誤信息
fatal(″查詢錯誤n″);
}
//將查詢出來的結(jié)果保存到查詢結(jié)果的指針變量res中
$res=msqlStoreResult();
//得到查詢結(jié)果的記錄數(shù)目
$numrow=msqlNumRows($res);
if($numrow==1)
{
//得到當(dāng)前記錄的指針
$row=msqlFetchRow($res);
//將保存在表中的口令和用戶輸入的口令相比較
if(!strcmp($password—ur,$row[2]))
{
//輸出注冊成功信息
echo(″〈center〉注冊成功〈/center〉″);
}else
{
//輸出口令不對的提示信息
echo(″〈center〉您輸入的口令不正確〈/center〉″);
}
}else
{
//輸出用戶名輸入出錯信息
echo(″〈center〉您輸入的用戶名不正確〈/center〉″);
}
}
//釋放查詢結(jié)果占用的內(nèi)存
msqlFreeResult($res);
//關(guān)閉數(shù)據(jù)庫系統(tǒng)的套接字
msqlClose($sock);
〉
〈/BODY〉
〈/HTML〉
以上介紹了在Linux下以MySQL數(shù)據(jù)庫系統(tǒng)作為后臺數(shù)據(jù)庫開發(fā)應(yīng)用系統(tǒng)的方法。有了這些基本的方法,我們就能開發(fā)出各種基于mSQL數(shù)據(jù)庫的應(yīng)用系統(tǒng)。上文給出了Linux下MySQL數(shù)據(jù)庫開發(fā)技術(shù)的詳細(xì)過程,希望大家能夠從中收獲有用的知識,上文中內(nèi)容僅供大家參考。
【編輯推薦】