程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MFC對MYSQL數據庫相關操作

MFC對MYSQL數據庫相關操作

編輯:MySQL綜合教程

MFC對MYSQL數據庫相關操作


記得看過有人說,現在的軟件基本上都是連著數據庫的,如果一個軟件沒有跟數據庫相連,基本沒什麼作用。雖然這種說法略顯片面,但數據庫之於軟件的重要也是毋庸置疑的。

MFC連接數據庫應該不算是什麼新鮮的命題了,方法是有好幾種的,本人試了下,感覺利用MySQL提供的C語言API來進行操作蠻方便的,所以在此記錄下相關的操作。

要用MySQL提供的C語言API,首先要包含API的頭文件目錄,也就是在MFC工程屬性中的“包含目錄”下添加MySQL安裝目錄的“include”文件夾。因為API是以動態鏈接庫的形式打包的,所以還要在MFC工程屬性中的“庫目錄”下添加MySQL安裝目錄的“lib”文件夾,結果如下圖所示:

\

因為是動態鏈接庫,所以在做完上面的配置後,要將MySQL安裝目錄下的libmysql.dll文件拷貝到MFC工程目錄下,如果以後要發行的話這個也要打包進去。昨晚這一步,我們只需要在用到MySQL的頭文件中包含MySQL頭文件就可以正常使用此數據庫了。代碼如下:

 

#include "winsock.h"//因為數據庫是通過網絡連接的,必須包含網絡相關頭文件
#include "mysql.h"//這個沒什麼好說的,mysql頭文件自然要包含  
#pragma comment(lib,"libmySQL.lib")//附加依賴項,也可以在工程屬性中設置

做完上面的配置,我們已經可以正常的使用MySQL提供的API了,下面分門別類的來講講具體的操作。

 

連接數據庫:

 

MYSQL m_sqlCon;
mysql_init(&m_sqlCon);//初始化數據庫對象
if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "123", "test", 3306, NULL, 0))//localhost:服務器地址,可以直接填入IP;root:賬號;123:密碼;test:數據庫名;3306:網絡端口  
{
	AfxMessageBox(_T("數據庫連接失敗!"));
	return;
}
else//連接成功則繼續訪問數據庫,之後的相關操作代碼基本是放在這裡面的
{
	AfxMessageBox(_T("數據庫連接成功!"));
}
mysql_close(&m_sqlCon);//關閉Mysql連接  

 

得到數據庫中表數據:

 

mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//設置數據庫字符格式,解決中文亂碼問題
if (mysql_real_query(&m_sqlCon, "select * from 物料屬性", (unsigned long)strlen("select * from 物料屬性")))// 查詢數據庫中的"物料屬性"表  
{return;}
res = mysql_store_result(&m_sqlCon);//得到存儲結果集  
if (NULL == res)//如果為空則返回
{ return; }
int listrow = 0;
while (row = mysql_fetch_row(res))//重復讀取行,把數據放入列表中,直到row為NULL  
{
	for (int rols = 0; rols < cols; rols++)
	{
		CString myreaddata(row[rols]);
		if (rols==0)
		{
			list->InsertItem(listrow, myreaddata);//添加第一個學生數據
		}
		else
		{
			list->SetItemText(listrow, rols, myreaddata);
		}
	}
	listrow++;
}
清空數據表內容:
mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//設置數據庫字符格式,解決中文亂碼問題
char *mysqlstatements = "DELETE 物料屬性.*FROM 物料屬性";//sql操作語句
mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//清空"物料屬性"表  

插入數據表內容:

 

sprintf_s(mysqlstatements, "INSERT INTO 物料屬性(物料編號,物料名稱,所屬類別,計量單位,樣品單價,批量單價) value('%s', '%s', '%s', '%s', '%s', '%s')",
	mysqlinsertpoint[0], mysqlinsertpoint[1], mysqlinsertpoint[2], mysqlinsertpoint[3], mysqlinsertpoint[4], mysqlinsertpoint[5]); //sql操作語句
mysql_real_query(&m_sqlCon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//插入數據到"物料屬性"表

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved