vc調用mysql數據庫操作例子


這里歸納了C API可使用的函數

函數

描述

mysql_affected_rows()

返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數。

mysql_autocommit()

切換 autocommit模式,ON/OFF

mysql_change_user()

更改打開連接上的用戶和數據庫。

mysql_charset_name()

返回用於連接的默認字符集的名稱。

mysql_close()

關閉服務器連接。

mysql_commit()

提交事務。

mysql_connect()

連接到MySQL服務器。該函數已不再被重視,使用mysql_real_connect()取代。

mysql_create_db()

創建數據庫。該函數已不再被重視,使用SQL語句CREATE DATABASE取而代之。

mysql_data_seek()

在查詢結果集中查找屬性行編號。

mysql_debug()

用給定的字符串執行DBUG_PUSH。

mysql_drop_db()

撤銷數據庫。該函數已不再被重視,使用SQL語句DROP DATABASE取而代之。

mysql_dump_debug_info()

讓服務器將調試信息寫入日志。

mysql_eof()

確定是否讀取了結果集的最后一行。該函數已不再被重視,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()

返回上次調用的MySQL函數的錯誤編號。

mysql_error()

返回上次調用的MySQL函數的錯誤消息。

mysql_escape_string()

為了用在SQL語句中,對特殊字符進行轉義處理。

mysql_fetch_field()

返回下一個表字段的類型。

mysql_fetch_field_direct()

給定字段編號,返回表字段的類型。

mysql_fetch_fields()

返回所有字段結構的數組。

mysql_fetch_lengths()

返回當前行中所有列的長度。

mysql_fetch_row()

從結果集中獲取下一行

mysql_field_seek()

將列光標置於指定的列。

mysql_field_count()

返回上次執行語句的結果列的數目。

mysql_field_tell()

返回上次mysql_fetch_field()所使用字段光標的位置。

mysql_free_result()

釋放結果集使用的內存。

mysql_get_client_info()

以字符串形式返回客戶端版本信息。

mysql_get_client_version()

以整數形式返回客戶端版本信息。

mysql_get_host_info()

返回描述連接的字符串。

mysql_get_server_version()

以整數形式返回服務器的版本號。

mysql_get_proto_info()

返回連接所使用的協議版本。

mysql_get_server_info()

返回服務器的版本號。

mysql_info()

返回關於最近所執行查詢的信息。

mysql_init()

獲取或初始化MYSQL結構。

mysql_insert_id()

返回上一個查詢為AUTO_INCREMENT列生成的ID。

mysql_kill()

殺死給定的線程。

mysql_library_end()

最終確定MySQL C API庫。

mysql_library_init()

初始化MySQL C API庫。

mysql_list_dbs()

返回與簡單正則表達式匹配的數據庫名稱。

mysql_list_fields()

返回與簡單正則表達式匹配的字段名稱。

mysql_list_processes()

返回當前服務器線程的列表。

mysql_list_tables()

返回與簡單正則表達式匹配的表名。

mysql_more_results()

檢查是否還存在其他結果。

mysql_next_result()

在多語句執行過程中返回/初始化下一個結果。

mysql_num_fields()

返回結果集中的列數。

mysql_num_rows()

返回結果集中的行數。

mysql_options()

為mysql_connect()設置連接選項。

mysql_ping()

檢查與服務器的連接是否工作,如有必要重新連接。

mysql_query()

執行指定為“以Null終結的字符串”的SQL查詢。

mysql_real_connect()

連接到MySQL服務器。

mysql_real_escape_string()

考慮到連接的當前字符集,為了在SQL語句中使用,對字符串中的特殊字符進行轉義處理。

mysql_real_query()

執行指定為計數字符串的SQL查詢。

mysql_refresh()

刷新或復位表和高速緩沖。

mysql_reload()

通知服務器再次加載授權表。

mysql_rollback()

回滾事務。

mysql_row_seek()

使用從mysql_row_tell()返回的值,查找結果集中的行偏移。

mysql_row_tell()

返回行光標位置。

mysql_select_db()

選擇數據庫。

mysql_server_end()

最終確定嵌入式服務器庫。

mysql_server_init()

初始化嵌入式服務器庫。

mysql_set_server_option()

為連接設置選項(如多語句)。

mysql_sqlstate()

返回關於上一個錯誤的SQLSTATE錯誤代碼。

mysql_shutdown()

關閉數據庫服務器。

mysql_stat()

以字符串形式返回服務器狀態。

mysql_store_result()

檢索完整的結果集至客戶端。

mysql_thread_id()

返回當前線程ID。

mysql_thread_safe()

如果客戶端已編譯為線程安全的,返回1。

mysql_use_result()

初始化逐行的結果集檢索。

mysql_warning_count()

返回上一個SQL語句的告警數。

做了下簡單的封裝

頭文件

 1 #ifndef __MYMYSQL_H__
 2 #define __MYMYSQL_H__
 3 #include <WinSock2.h>
 4 #include <mysql.h>
 5 #pragma comment(lib,"libmysql.lib")
 6 #define SZCHARSIZE 100
 7 typedef struct _tagMysqlInfo
 8 {
 9     char host[SZCHARSIZE];    //主機
10      char user[SZCHARSIZE];    //用戶名
11      char passwd[SZCHARSIZE];    //密碼
12      char db[SZCHARSIZE];    //數據庫
13      UINT port;            //端口號
14      char unix_socket[SZCHARSIZE];    //如果unix_socket不是NULL,該字符串描述了應使用的套接字或命名管道。注意,“host”參數決定了連接的類型。
15      DWORD client_flag;    // client_flag的值通常為0
16 }MYSQLINFO,*PMYSQLINFO;
17 class CMyMysql
18 {
19 public:
20     CMyMysql(void);
21     BOOL connect(const MYSQLINFO);    //連接成功返回true 失敗返回false
22     BOOL query(const char*);            //查詢mysql語句
23     my_ulonglong GetresultLine();                //獲取查詢到的行數
24     MYSQL* GetMysqlPtr();            //獲取mysql指針
25     MYSQL_RES* GetMysqlresPtr();    //獲取mysqlres指針
26     ~CMyMysql(void);
27 private:
28     MYSQL* m_mYsqlPtr;    //mysql 指針
29     MYSQL_RES* m_mYsqlres;    //mysql 結果集指針
30 };
31 #endif //__MYMYSQL_H__

cpp文件

 1 #include "MyMysql.h"
 2 
 3 CMyMysql::CMyMysql(void)
 4     :m_mYsqlPtr(NULL)
 5 {
 6     m_mYsqlPtr = mysql_init(NULL);
 7 }
 8 
 9 
10 CMyMysql::~CMyMysql(void)
11 {
12     if (m_mYsqlPtr)
13         mysql_close(m_mYsqlPtr);
14     if (m_mYsqlres)
15         mysql_free_result(m_mYsqlres);
16 }
17 BOOL CMyMysql::connect(const MYSQLINFO mysqlInfo)
18 {
19     if(!mysql_real_connect(m_mYsqlPtr,mysqlInfo.host,mysqlInfo.user,mysqlInfo.passwd,mysqlInfo.db,mysqlInfo.port,mysqlInfo.unix_socket,mysqlInfo.client_flag))
20         return FALSE;
21     else
22         return TRUE;
23 }
24 BOOL CMyMysql::query(const char* szSql)
25 {
26     if(!strlen(szSql))return FALSE;
27     if(mysql_query(m_mYsqlPtr,szSql))
28         return FALSE;
29     else
30         return TRUE;
31 }
32 my_ulonglong CMyMysql::GetresultLine()
33 {
34     m_mYsqlres = mysql_store_result(m_mYsqlPtr);
35     if(!m_mYsqlres)return NULL;
36     return mysql_num_rows(m_mYsqlres);
37 }
38 MYSQL* CMyMysql::GetMysqlPtr()
39 {
40     return m_mYsqlPtr;
41 }
42 MYSQL_RES* CMyMysql::GetMysqlresPtr()
43 {
44     return m_mYsqlres;
45 }

簡單的調用例子用的MFC

 1 void CMysqlDemoDlg::OnBnClickedButton1()
 2 {
 3     CMyMysql * mYSQL = new CMyMysql();
 4     MYSQLINFO mysqlInfo;
 5     ZeroMemory(&mysqlInfo,sizeof(MYSQLINFO));
 6     CopyMemory(mysqlInfo.host,"localhost",_tcslen("localhost"));
 7     CopyMemory(mysqlInfo.user,"root",_tcslen("root"));
 8     CopyMemory(mysqlInfo.passwd,"123456",_tcslen("123456"));
 9     mysqlInfo.port =3306;
10     if (!mYSQL->connect(mysqlInfo))
11     {
12         AfxMessageBox("連接數據庫失敗!\r\n");
13         delete mYSQL;
14         return ;
15     }
16     if (mysql_set_character_set(mYSQL->GetMysqlPtr(),"gbk"))
17     {
18         AfxMessageBox("設置默認字符失敗!\r\n");
19         delete mYSQL;
20 
21     }
22     if (mysql_select_db(mYSQL->GetMysqlPtr(),"ecshop"))
23     {
24         AfxMessageBox("選擇數據庫失敗!\r\n");
25         delete mYSQL;
26     }
27     if(!mYSQL->query("select * from ecs_admin_user;"))
28     {
29         AfxMessageBox("查詢失敗!\r\n");
30         delete mYSQL;
31     }
32     my_ulonglong Line = mYSQL->GetresultLine();
33     MYSQL_FIELD* fd = NULL;
34     CString str;
35     while (fd = mysql_fetch_field(mYSQL->GetMysqlresPtr()))
36     {
37         str+= fd->name;
38         str+="\r\n";
39     }
40     SetDlgItemText(IDC_EDIT1,str);
41     MYSQL_ROW  rows;
42     str = "";
43     UINT  listSize = mysql_num_fields(mYSQL->GetMysqlresPtr());
44     while(rows = mysql_fetch_row(mYSQL->GetMysqlresPtr()))
45     {
46         for (UINT i = 0;i<listSize;i++)
47         {
48             str+= rows[i];
49         }
50         str+="\r\n";
51     }
52     SetDlgItemText(IDC_EDIT2,str);
53     delete mYSQL;
54 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM