![cc經(jīng)典代碼數(shù)據(jù)庫連接_第1頁](http://file4.renrendoc.com/view/66790f15579424e1b5415bca3043d95f/66790f15579424e1b5415bca3043d95f1.gif)
![cc經(jīng)典代碼數(shù)據(jù)庫連接_第2頁](http://file4.renrendoc.com/view/66790f15579424e1b5415bca3043d95f/66790f15579424e1b5415bca3043d95f2.gif)
![cc經(jīng)典代碼數(shù)據(jù)庫連接_第3頁](http://file4.renrendoc.com/view/66790f15579424e1b5415bca3043d95f/66790f15579424e1b5415bca3043d95f3.gif)
![cc經(jīng)典代碼數(shù)據(jù)庫連接_第4頁](http://file4.renrendoc.com/view/66790f15579424e1b5415bca3043d95f/66790f15579424e1b5415bca3043d95f4.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C/C+連接數(shù)據(jù)庫一、連接方法1.添加頭文件和庫文件頭文件添加方法 : 項(xiàng)目配置屬性C/C+常規(guī)”,在 “附加包含目錄中加入頭文件所在的文件夾(添加路徑是:C:Program Files 2.庫文件添加方式:“項(xiàng)目配置屬性Server 5.6include)器常規(guī)”,在 “附加庫目錄”中加入 LIB 所在目錄(添加路徑是:C:ProgramFilesServer 5.6lib)3.添加庫文件的附加依賴項(xiàng)依次點(diǎn)擊“項(xiàng)目配置屬性器輸入”,在“附加依賴項(xiàng)”中加入 lib.lib中取出數(shù)據(jù)的 API 介紹二、連接和從的 API 接口:_affected_rows() 返回被附的 UPDATE, DEL
2、ETE 或 INSERT 查詢影響的行數(shù)。_close() 關(guān)閉一個服務(wù)器連接。_connect() 連接一個;使用_real_connect()代替。服務(wù)器。該函數(shù)不_change_user() 改變在一個打開的連接上的用戶和數(shù)據(jù)庫。_create_db() 創(chuàng)建一個數(shù)據(jù)庫。該函數(shù)不;而使用 SQL 命令 CREATE DATABASE。_data_seek() 在一個查詢結(jié)果集合中搜尋一任意行。_debug() 用給定字符串做一個 DBUG_PUSH。_drop_db() 拋棄一個數(shù)據(jù)庫。該函數(shù)不;而使用 SQL 命令 DROP DATABASE。_dump_debug_info() 讓服
3、務(wù)器將調(diào)試信息寫入日志文件。_eof() 確定是否已經(jīng)讀到一個結(jié)果集合的最后一行。這功能被;_errno()或_error()可以相反被使用。_errno() 返回最近被調(diào)用的_error() 返回最近被調(diào)用的函數(shù)的出錯。函數(shù)的出錯消息。_esc_string() 用在 SQL 語句中的字符串的轉(zhuǎn)義特殊字符。_fetch_field() 返回下一個表字段的類型。_fetch_field_direct () 返回一個表字段的類型,給出一個字段_fetch_fields() 返回一個所有字段結(jié)構(gòu)的數(shù)組。_fetch_lengths() 返回當(dāng)前行中所有列的長度。_fetch_row() 從結(jié)果集合
4、中取得下一行。_field_seek() 把列光標(biāo)放在一個指定的列上。_field_count() 返回最近查詢的結(jié)果列的數(shù)量。_field_ l() 返回用于最后一個_fetch_field()的字段光標(biāo)的位置。_free_result()一個結(jié)果集合使用的內(nèi)存。_get_c nt_info() 返回客戶版本信息。_get_host_info() 返回一個描述連接的字符串。_get_proto_info() 返回連接使用的協(xié)議版本。_get_server_info() 返回服務(wù)器版本號。_info() 返回關(guān)于最近執(zhí)行得查詢的信息。_init() 獲得或初始化一個結(jié)構(gòu)。_insert_id(
5、) 返回有前一個查詢?yōu)橐粋€ AUTO_INCREMENT 列生成的 ID。_kill() 殺死一個給定的線程。_list_dbs() 返回匹配一個簡單的正則表達(dá)式的數(shù)據(jù)庫名。_list_fields() 返回匹配一個簡單的正則表達(dá)式的列名。_list_proses() 返回當(dāng)前服務(wù)器線程的一張表。_list_tables() 返回匹配一個簡單的正則表達(dá)式的表名。_num_fields() 返回一個結(jié)果集合重的列的數(shù)量。_num_rows() 返回一個結(jié)果集合中的行的數(shù)量。_options() 設(shè)置對_connect()的連接選項(xiàng)。_() 檢查對服務(wù)器的連接是否正在工作,必要時重新連接。_que
6、ry() 執(zhí)行指定為一個空結(jié)尾的字符串的 SQL 查詢。_real_connect() 連接一個服務(wù)器。_real_query() 執(zhí)行指定為帶計(jì)數(shù)的字符串的 SQL 查詢。_reload() 告訴服務(wù)器重裝表。_row_seek() 搜索在結(jié)果集合中的行,使用從_row_row_ l() 返回行光標(biāo)位置。_select_db() 連接一個數(shù)據(jù)庫。_shutdown() 關(guān)掉數(shù)據(jù)庫服務(wù)器。_s () 返回作為字符串的服務(wù)器狀態(tài)。_store_result() 檢索一個完整的結(jié)果集合給客戶。_thread_id() 返回當(dāng)前線程的 ID。_use_result() 初始化一個一行一行地結(jié)果集合的
7、檢索。l()返回的值。2.1_real_connect()2.1.1函數(shù)原型:*_real_connect(*, const char *host, const char *user, const char *passwd, constchar *db, unsignedport, const char *unix_socket, unsignedc nt_flag)2.1.2 參數(shù)說明:第一個參數(shù)應(yīng)該是一個現(xiàn)存結(jié)構(gòu)。見下面的例子。結(jié)構(gòu)的地址。在調(diào)用_real_connect()之前,你必須調(diào)用_init()初始化host 值可以是一個主機(jī)名或一個 IP 地址。如果 host 是 NULL 或
8、字符串localhost,假定是到本OS 支持套接字(Unix)或命名管道(Win32),使用他們而不是 TCP/IP 與服務(wù)器連接。機(jī)的接。如果user 參數(shù)包含用戶的登錄 ID。如果 user 是 NULL,假定是當(dāng)前用戶。在 Unix 下,它是當(dāng)前登錄名。在 WindowsODBC 下,必須明確地指定當(dāng)前用戶名字。見 16.4 怎樣填寫 ODBC 管理程序中各種域。passwd 參數(shù)為 user 包含口令。如果 passwd 是 NULL,只有在 user 表中對于有一個空白口令字段的用戶的條目將被檢查一個匹配。這允許數(shù)據(jù)庫主管設(shè)置權(quán)限,使用戶獲得不同的口令,取決于他們是否已經(jīng)指定一個口
9、令。注意:不要試圖在調(diào)用_real_connect()前加密口令;口令加密自動被客戶 API 處理。db 是數(shù)據(jù)庫名。如果 db 不是 NULL,連接將缺省數(shù)據(jù)庫設(shè)置為這個值。如果 port 不是 0,值對于 TCP/IP 連接將用作端。注意 host 參數(shù)決定連接的類型。如果 unix_socket 不是 NULL,字符串指定套接字或應(yīng)該被使用名管道。注意 host 參數(shù)決定連接的類型。c nt_flag 值通常是 0,但是在很特殊的情況下可以被設(shè)置為下列標(biāo)志的組合:標(biāo)志名字 意味著的標(biāo)志CNT_FOUND_ROWS 返回找到的(匹配的)行數(shù),不是受到影響的行數(shù)。CNT_NO_SCHEMA
10、不允許 db_name.tbl_name.col_name 語法。這是為了 ODBC;如果你使用該語法,導(dǎo)致語法分析器產(chǎn)生一個錯誤,它是為在一些 ODBC 程序捕捉錯誤是有用的。PRESS 使用壓縮協(xié)議。CNT_ODBC 客戶是一個 ODBC 客戶。這使d 變得對 ODBC 更友好。2.1.3 返回值*連接句柄。如果連接失敗,NULL。對一個成功的連接,返回值與第一個參數(shù)值相同,除非你傳如果連接成功,一個遞 NULL 給該參數(shù)。2.1.4 錯誤CR_CONN_HOST_ERROR不能連接服務(wù)器。CR_CONNECTION_ERROR不能連接本地服務(wù)器。CR_IPSOCK_ERROR不能創(chuàng)建一個
11、 IP 套接字。CR_OUT_OF_MEMORY內(nèi)存溢出。CR_SOCKET_CREATE_ERROR不能創(chuàng)建一個 Unix 套接字。CR_UNKNOWN_HOST不能找到主機(jī)名的 IP 地址。CR_VER_ERROR由于試圖使用一個不同協(xié)議版本的一個客戶庫與一個服務(wù)器連接導(dǎo)致的一個協(xié)議失配。如果你使用一個非常老的客戶庫連接一個沒有使用-old-protocol 選項(xiàng)啟動的新服務(wù)器,這就能發(fā)生。CR_NAMEDPIPEOPEN_ERROR;不能在 Win32 上創(chuàng)建一個命名管道。CR_NAMEDPIPEWAIT_ERROR;不能在 Win32 上等待一個命名管道。CR_NAMEDPIPESET
12、SE_ERROR;不能在 Win32 上得到一個管道處理器。2.2_select_db()2.2.1 函數(shù)原型_select_db(*, const char *db)2.2.2 參數(shù)說明使得由 db 指定的數(shù)據(jù)庫成為 在由指定的連接上的缺省(當(dāng)前)數(shù)據(jù)庫。在隨后的查詢中,這個數(shù)據(jù)庫對于不包括一個顯式的數(shù)據(jù)庫指定符的表的是缺省數(shù)據(jù)庫。除非連接的用戶能被認(rèn)證允許使用數(shù)據(jù)庫,否則_select_db()失敗。2.2.3 返回值成功,零。如果發(fā)生一個錯誤,非零。2.2.4 錯誤MANDS_OUT_OF_SYNC命令以一個不適當(dāng)?shù)拇涡虮粓?zhí)行。CR_SERVER_GONE_ERROR服務(wù)器關(guān)閉了。CR_
13、SERVER_LOST對服務(wù)器的連接在查詢期間失去。CR_UNKNOWN_ERROR發(fā)生一個未知的錯誤。2.3_real_query2.3.1 函數(shù)原型_real_query(*, const char *query, unsignedlength)2.3.2 參數(shù)說明執(zhí)行由 query 指向的 SQL 查詢,它應(yīng)該是一個 length 個字節(jié)的字符串。查詢必須由一個單個的 SQL 語句組成。你不應(yīng)該在語句后增加一個終止的分號(“;”)或g。_real_query()而不是_query(),因?yàn)槎M(jìn)制代碼數(shù)據(jù)可能包含“0”對于包含二進(jìn)制數(shù)據(jù)的查詢,你必須使用字符,而且,_real_query(
14、)比_query()更快,因?yàn)樗鼘Σ樵冏址{(diào)用 strlen()。2.3.3 返回值如果查詢成功,零。如果發(fā)生一個錯誤,非零。2.3.4 錯誤MANDS_OUT_OF_SYNC命令以一個不適當(dāng)?shù)拇涡虮粓?zhí)行。CR_SERVER_GONE_ERROR服務(wù)器關(guān)閉了。CR_SERVER_LOST對服務(wù)器的連接在查詢期間失去。CR_UNKNOWN_ERROR發(fā)生一個未知的錯誤。2.4_store_result2.4.1 函數(shù)原型_RES *_store_result(*)2.4.2 返回值_RES result structure with the results. NULL (0) if an er
15、ror occurred.A2.5Description_fetch_row()Retrieves the next row of a result set. When used_store_result(),_fetch_row() returns NULL when there are no more rowsafter_use_result(),_fetch_row() returns NULL whento retrieve. When used afterthere are no more rows to retrieve or if an error occurred._num_f
16、ields(result). If row holds the returnThe number of valuesvalue from a call to as row0 to rowby NULL po ers.he row is given by_fetch_row(), po ers to the values are acsed_num_fields(result)-1. NULL valueshe row are indicated_fetch_lengths(). EmptyThe lengths of the field valueshe row may be obtained
17、 by callingfields and fields containing NULL both have length 0; you can distinguish these by checking the po er for thefield value. If the po er is NULL, the field is NULL; otherwise, the field is empty.Return Values_ROW structure for the next row. NULL if there are no more rows to retrieve or if a
18、n error occurred.AErrors_fetch_row()Notet error is not reset betn calls toCR_SERVER_LOSTThe connection to the server was lost during the query.參考資料:ht/doc/refman/5.6/en/index.html三、利用庫提供的 API 編寫連接和從中取出數(shù)據(jù)的代碼1: #include 2: #include stdio.h3: #include winsock.h 4: #include .h 5:6:7:main()8: 9:10:* con;
19、 /=_init(*) 0); 11:_RES *res;12:_ROW row;13:14:15: char tmp400;16:17: /database configuartion18: char dbuser30=root;19: char dbpasswd30=apple; 20: char d 30=localhost; 21: char dbname50=excel;22: char tablename50=test;23: char *query=NULL;24:25:26:x;27:y;28:rt;/return value29: unsignedt;30:31:count
20、= 0;32:33:34: prf(input x,yn);35: scanf(%d,%d,&x,&y);36: fflush(stdin);37: prf(input overn);38: con =_init(*) 0);CR_UNKNOWN_ERRORAn unknown error occurred.39:40:41:if ( con !=NULL &_real_connect(con,d,dbuser,dbpasswd,dbname,3306/*TCP IP端口*/,NULL/*UnixSocket 連接類型*/,0/*運(yùn)行成 ODBC 數(shù)據(jù)庫標(biāo)志*/)42:43:44:45:46:
21、47:48:49:50:51:52:53:54:55:query: 56:57:58:59:60:61:62:63:64:65:66:67:if(!_select_db(con,dbname)prf(Select sucsfully the database!n);con-reconnect = 1;query/= set names GBK;_query(con,set names GBK);rt=if (rt)pr!n,elsepr_real_query(con,query,strlen(query);f(Error making_error(con);%sf(query %cceed!n
22、,query);elseMessageBoxA(NULL,Unable to connect the database,checkyour68:69:70:71:configuration!,NULL);f(tmp,update %s set 商品=%s,賣出=%d,成交/spr=%d,漲跌=%d,買進(jìn)=%d,總量=%d,漲幅=%f,時間=%swhere%s,tablename,goods,sold,deal,fluctuate,buy,total,delta,time,UpdateCon);72:sprf(tmp,inserto %svalues(%s,%d,%d),tablename,nu
23、ll,x,y); /注意如何向具有自增字段的數(shù)據(jù)庫中73:/MessageBoxA(NULL,tmp,tmp,MB_OK);74:75:76:77:78:79:query: 80:81:82:83:84:85:86:87:88:89:90:91:query: 92:93:94:95:96:97:98:中99:100:101:102:103:/_query(con,tmp);rt=if (rt)pr!n,elsepr_real_query(con,tmp,strlen(tmp);f(Error making_error(con);%sf(%s executed!n,tmp);sprf(tmp,s
24、elect * from %s,tablename);rt=if (rt)pr!n,elsepr_real_query(con,tmp,strlen(tmp);f(Error making_error(con);%sf(%s executed!n,tmp);_store_result(con);/將結(jié)果保存在res 結(jié)構(gòu)體res =while(row =/*_fetch_row(res)*_ROWSTDCALL_fetch_row(_RES*result);104:105:106:107:108:109:110:111:112:113:* 檢索行*/for(t=0;t_num_fields(r
25、es);t+)prf(%s ,rowt);prf(n);count +;114:115:116:117:118:119:120:121:prprf(number of rows %dn,count);f(_free_result.n);_free_result(res);_close(con);return0;四、運(yùn)行結(jié)果五、數(shù)據(jù)庫/*NavicatDaransferSourSour Source Sourceervererver Host: localhost: 50141: localhost:3306: excelVerDatabaseServerServer File Encoding
26、TypeVer: 50141: 65001Date:*/2011-09-23 10:41:431:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:SET FOREIGN_KEY_CHECKS=0;- Table structure for test-DROP TABLE IF EXISTS test;CREATE TABLE test (xyzbig(4) NOT NULL AUTO_INCREMENT,(4) DEFAULT NULL,(4) DEFAULT NULL,PRIMARY KE
27、Y (x) ENGINE=InnoDB AUTO_INCREMENT=118 DEFAULT CHARSET=latin1;- Records of test-INSERTINSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERTOO O O O O O O O O O O O OtesttesttesttesttesttesttesttesttesttesttesttesttesttestVALUESVALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES(95,(96,(97,(98,(99,(100,(101,(102,(103,(104,(105,(106,(107,(108,12432, 4334);213,213,123,321,321);213);231);231);123
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年第12課從明朝建立到清軍人關(guān)-勤徑學(xué)升高中歷史必修上同步練測(統(tǒng)編版2019)
- 園林養(yǎng)護(hù)人員雇傭合同范文2025年
- 2025年伙伴合同終止協(xié)議
- 2025年企業(yè)辦公用品綜合供需合同
- 2025年官方物流配送協(xié)議書高清
- 2025年企業(yè)設(shè)備抵押擔(dān)保貸款合同
- 2025年動物收養(yǎng)協(xié)議版式
- 2025年糧食供需雙方合同策劃大綱
- 2025年智能交通項(xiàng)目提案報(bào)告模式
- 2025年企業(yè)維修保養(yǎng)年合作協(xié)議
- 助貸機(jī)構(gòu)業(yè)務(wù)流程規(guī)范
- DL∕T 5106-2017 跨越電力線路架線施工規(guī)程
- 西師大版數(shù)學(xué)四年級下冊全冊教學(xué)課件(2024年3月修訂)
- 骨科醫(yī)院感染控制操作流程
- 綠化養(yǎng)護(hù)服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 九年級物理第一課
- 食材配送技術(shù)方案
- 全年無休供貨承諾書
- 中藥的臨床合理應(yīng)用
- 材料設(shè)備采購進(jìn)度計(jì)劃控制措施
- 寧夏銀川三中2023-2024學(xué)年九年級上學(xué)期期末物理試卷
評論
0/150
提交評論