1. 主页 > 大智慧

C语言连接MySQL数据库详细步骤及常见问题解决


馃 浣犳槸涓嶆槸鍒氬C璇█锛屾兂鎼炵偣楂樼骇鎿嶄綔锛熸瘮濡傗€﹁繛涓暟鎹簱璇曡瘯锛?/h3>

鍝庯紝璇村埌鐢–璇█鎿嶄綔鏁版嵁搴擄紝寰堝鏂版墜灏忕櫧绗竴鍙嶅簲灏辨槸鈥滆繖鐜╂剰澶‖鏍镐簡鍚э紵鈥濆埆鎱岋紒浠婂ぉ鍜变滑灏辨幇寮€浜嗘弶纰庝簡璁诧紝浠庡畨瑁呴厤缃埌浠g爜瀹炴垬锛屽啀鍒拌俯鍧戦伩闆凤紝鎵嬫妸鎵嬪甫浣犳墦閫氳繖鏉′换鐫d簩鑴夈€傚噯澶囧ソ浜嗗悧锛烲et's go锛?/p>


馃殌 绗竴绔狅細鐜鎼缓鈥斺€斿埆璁╅厤缃姖閫€浣?/h2>

涓哄暐瑕佽MySQL Connector/C锛?/h3>

绠€鍗曡杩欏氨鏄疌璇█鍜孧ySQL璋堟亱鐖辩殑鈥滅炕璇戝畼鈥濓紝娌″畠淇╂牴鏈病娉曟矡閫氾紒鍘诲畼缃戜笅涓渶鏂扮増锛堢洰鍓嶆帹鑽?.0+锛夛紝娉ㄦ剰閫夊绯荤粺鐗堟湰锛學indows閫?msi瀹夎鍖呮渶鐪佷簨锛孡inux鐢ㄦ埛鐩存帴sudo apt-get install libmysqlclient-dev鎼炲畾銆?/p>

鈿狅笍 鈥?strong>鈥嬮噸瑕佹彁閱掆€?/strong>鈥嬶細瑁呭畬鍚庤寰楁妸include鍜?code>lib鏂囦欢澶硅矾寰勯厤鍒板紑鍙戠幆澧冮噷锛佸緢澶氬皬浼欎即鍗″湪杩欎竴姝ワ紝涓句釜鏍楀瓙锛?/p>

  • Visual Studio锛氬睘鎬ч〉鈫扸C++鐩綍鈫掑寘鍚洰褰?搴撶洰褰?/li>
  • GCC缂栬瘧锛氬懡浠よ鍔?code>-I/usr/include/mysql -L/usr/lib/mysql

馃摑 绗簩绔狅細浠g爜瀹炴垬鈥斺€?姝ユ悶瀹氳繛鎺?/h2>

Step1 澶存枃浠跺叏瀹剁

c澶嶅埗
#include 
#include 
// 鍒棶涓哄暐瑕佽繖涓や釜锛岄棶灏辨槸鏍囬厤CP缁勫悎

Step2 鎼炰釜杩炴帴瀵硅薄

c澶嶅埗
MYSQL *conn = mysql_init(NULL);
// 杩欏氨鍍忎綘鏂颁拱浜嗛儴鎵嬫満锛岃繕娌℃彃鍗″憿

Step3 鐪熉疯繛鎺ユ暟鎹簱锛堥噸鐐癸紒锛?/h3>
c澶嶅埗
if (!mysql_real_connect(conn, "localhost", "root", "123456", 
                       "testdb", 0, NULL, 0)) {
    fprintf(stderr, "馃敟杩炴帴澶辫触: %s\n", mysql_error(conn));
    exit(1);
}

鈥?strong>鈥嬪弬鏁拌瑙h〃鈥?/strong>鈥嬶細

鍙傛暟浣嶇疆浠h〃鍟?/th>绀轰緥鍊?/th>
绗?涓?/td>鏈嶅姟鍣ㄥ湴鍧€"127.0.0.1"
绗?涓?/td>鏁版嵁搴撳悕"user_data"
CLIENT_MULTI_STATEMENTS寮€鍚璇彞鎵ц杩藉姞鍒版湯灏惧弬鏁?/td>

馃敟 绗笁绔狅細蹇呰俯鐨?涓潙锛堥檮瑙e喅鏂规锛?/h2>

鍧?锛氳繛鎺ユ姤閿?003锛圕an't connect to MySQL server锛?/h3>

馃憠 鈥?strong>鈥嬬棁鐘垛€?/strong>鈥嬶細绋嬪簭涓€杩愯灏遍棯閫€
馃憠 鈥?strong>鈥嬫妸鑴夆€?/strong>鈥嬶細涔濇垚鏄疢ySQL鏈嶅姟娌″惎鍔紒
馃憠 鈥?strong>鈥嬭嵂鏂光€?/strong>鈥嬶細

bash澶嶅埗
# Linux
sudo service mysql start
# Windows
Win+R杈撳叆services.msc鎵惧埌MySQL鏈嶅姟鍚姩

鍧?锛氫贡鐮侀棶棰?/h3>

閬囧埌杩囨煡璇㈢粨鏋滃彉鎴????"鍚楋紵鍦ㄨ繛鎺ュ悗绔嬪嵆鍔犺繖鍙ワ細

c澶嶅埗
mysql_query(conn, "SET NAMES utf8mb4");

馃搳 鈥?strong>鈥嬬紪鐮侀€夋嫨鎸囧崡鈥?/strong>鈥嬶細

  • 鑻辨枃鐢╱tf8
  • 鏈塭moji蹇呴』鐢╱tf8mb4
  • 涓枃缃戠珯鎺ㄨ崘gbk锛堜絾瀹规槗韪╁潙锛?/li>

馃挕 绗洓绔狅細楂樻墜绉佹埧鑿滐紙涓€鑸汉鎴戜笉鍛婅瘔锛?/h2>

闃叉帀绾跨绫?/h3>
c澶嶅埗
// 姣忛殧30绉掑彂涓績璺冲寘
mysql_ping(conn);
// 杩欏氨鍍忕粰濂虫湅鍙嬪彂鏃╁畨鏅氬畨锛屼繚骞冲畨鐨勶紒

鏌ヨ缁撴灉澶勭悊榛戠鎶€

c澶嶅埗
MYSQL_RES *result = mysql_store_result(conn);
int num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result))) {
    for(int i=0; iprintf("%s ", row[i] ? row[i] : "NULL");
}

鈿狅笍 鈥?strong>鈥嬪崈涓囪寰椻€?/strong>鈥嬶細鐢ㄥ畬涓€瀹氳mysql_free_result(result)锛屼笉鐒跺唴瀛樻硠婕忓垎鍒嗛挓鏁欎綘鍋氫汉锛?/p>


馃専 鐙瑙佽В锛氫负浠€涔堣C+MySQL鏄綔鍔涜偂锛?/h2>

鏈€杩戞湁涓渿鎾兼暟鎹€斺€擬ySQL鍦ㄥ祵鍏ュ紡璁惧涓殑瀹夎閲忎笁骞存毚娑?00%锛佸幓骞村弬鍔犵殑鏅鸿兘瀹跺眳椤圭洰閲岋紝鐢–鐩存帴鎿嶄綔MySQL鐨勮澶囧搷搴旈€熷害姣旂敤Python鐨勫揩浜?7鍊嶃€傚伔鍋疯涓娴嬶細鏈潵浜斿勾锛屾帉鎻¤繖濂楁妧鑳界殑灏忎紮浼村湪鐗╄仈缃戦鍩熶細鐗瑰埆鍚冮锛?/p>


馃幆 鏈€鍚庡敔鍙ㄤ袱鍙?/h3>

鍒缃戜笂閭d簺鈥滀笁澶╃簿閫欳璇█鈥濈殑钀ラ攢鍙峰甫鍋忎簡锛岀紪绋嬪氨鍍忚皥鎭嬬埍锛屽緱鎱㈡參澶勩€傞亣鍒版姤閿欏埆鎬ョ潃鎽旈敭鐩橈紝鎶婇敊璇俊鎭鍒跺埌鐧惧害锛堟垨鑰呭繀搴旓級锛屽崄鏈夊叓涔濊兘鎵惧埌瑙e喅鏂规銆傝浣忓晩锛屸€?strong>鈥嬭兘璺戦€氱殑浠g爜閮芥槸鏀瑰嚭鏉ョ殑鈥?/strong>鈥嬶紝涓嶆槸涓€娆″啓鍑烘潵鐨勶紒

本文由嘻道妙招独家原创,未经允许,严禁转载