c 指定端口连接mysql_c++连接mysql(MYSQL C api使用)
1、設置工程屬性
包含目錄 D:\amp\MySQL5\lib\debug;D:\amp\MySQL5\include
2、頭文件
代碼:
#include "mysql.h"
#pragma comment(lib,"libmySQL.lib")
public:
...
MYSQL mysql;
char *sql;
MYSQL_RES *result;
MYSQL_ROW row;
4、連接數據庫
//mysql_real_connect(數據庫句柄,主機名,用戶名,密碼,數據庫名,端口,命名管道,客戶端標記)
代 碼:
mysql_init(&mysql);
if
(!mysql_real_connect(&mysql,"localhost","root","1","mydb",3306,NULL,0))
{
MessageBox(_T("
數據庫連接錯誤!"));
return FALSE;
}
mysql_query(&mysql,"SET NAMES
gb2312");
mysql_query(&mysql,"SET character
set gb2312");
5、如果連接成功,就可以進行數據庫的讀寫了:
步驟是:
1.mysql_query()提交查詢語句
2.mysql_use_result() 獲取上一次查詢的結果集
3.mysql_fetch_row()從結果集中獲取單項內容
4.mysql_free_result() 釋放結果集
根據建vc工程的屬性:
a.如果不是unicode,只需要在輸入輸出數據庫的地方加上
mysql_query(&mysql,"SET NAMES gb2312");
b.如果是unicode,文件是ANSI編碼,要進
行轉換,轉換是用MultiByteToWideChar()和WideCharToMultiByte()這兩個Windows
API,前者ANSI > Unicode, 后者Unicode >
ANSI。
ANSI > Unicode:
WCHAR ch[200];
MultiByteToWideChar(CP_ACP,0,row[0],nLength[0]+1,ch,sizeof(ch));
===============================================
Unicode > ANSI:
// 將CString的內容轉換為ANSI
void UnicodeToAnsi( CString str,char *pstr )
{
WCHAR *pwtrQuery;
pwtrQuery = (WCHAR *)(LPCTSTR)str;
WideCharToMultiByte(CP_ACP,0,pwtrQuery,-1,pstr,strlen(pstr),NULL,NULL);
}
使用方法:
char ch[200];
CString str = L"Unicode charactor";
UnicodeToAnsi(ch, str);
Unicode版代碼:
sql = "select username,visitelist,remark from
mytable";
if(mysql_query(&mysql,
sql)!=0)
{
MessageBox(_T("
讀取表出錯!"));
return;?}
if(!(result =
mysql_use_result(&mysql)))
{
MessageBox(_T("讀取數據集失敗!"));
return;?}
int i = 0;
CString tmp;
WCHAR wsz[100];
unsigned long *nLength;
while(row = mysql_fetch_row(result))
{
//ANSI >
Unicode
// 獲取結果字段的長度
nLength =
mysql_fetch_lengths(result);
// 獲取結果集中第一個字段的內容
MultiByteToWideChar(CP_ACP,0,row[0],nLength[0]+1,wsz,sizeof(wsz));
//?tmp.Format(_T("%s"),row[0]);
m_list.InsertItem(0, wsz);
nLength =
mysql_fetch_lengths(result);
MultiByteToWideChar(CP_ACP,0,row[1],nLength[1]+1,wsz,sizeof(wsz));
//?tmp.Format(_T("%s"),row[1]);
m_list.SetItemText(0, 1,
wsz);
nLength =
mysql_fetch_lengths(result);
MultiByteToWideChar(CP_ACP,0,row[2],nLength[2]+1,wsz,sizeof(wsz));
//?tmp.Format(_T("%s"),row[2]);
m_list.SetItemText(0, 2,
wsz);
i++;
}
mysql_free_result(result);
非Unicode版代碼:
...
while(row = mysql_fetch_row(result))
{
tmp.Format("%s",row[0]);
m_list.InsertItem(0, tmp);
nLength =
mysql_fetch_lengths(result);
tmp.Format("%s",row[1]);
m_list.SetItemText(0, 1,
tmp);
nLength =
mysql_fetch_lengths(result);
tmp.Format("%s",row[2]);
m_list.SetItemText(0, 2,
tmp);
i++;
}
...
總結
以上是生活随笔為你收集整理的c 指定端口连接mysql_c++连接mysql(MYSQL C api使用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 数据表创建字段类型_MySQ
- 下一篇: php mysql 白屏_apache+