當前位置:首頁 » 密碼管理 » mfc訪問mysql資料庫

mfc訪問mysql資料庫

發布時間: 2022-06-20 01:26:27

① vs2010 mfc 怎麼鏈接 mysql資料庫

新建一個工程名叫mysql,編程環境選擇c#,然後選擇windows窗體應用程序,新建一個窗體用於顯示查詢到sql資料庫的數據集

從工具箱向form1窗體上拖一個按鈕和datagridview控制項,按鈕是觸發連接資料庫獲取數據集,按鈕的名稱為顯示,datagridview控制項是用於顯示數據集內容

單擊解決方案資源管理器中的引用文件夾然後右鍵選擇添加引用,選擇瀏覽後打開mysql.data.dll,這是c#連接mysql資料庫的動態庫,裡面封裝了很多常用的操作資料庫的方法

在解決方案資源管理器中的form1.cs的代碼中加入using MySql.Data.MySqlClient;這就是代碼中的實際引用mysql.data.dll中的內容,有了這個c#就能很方便地操作sql資料庫

在按鈕的單擊事件中添加如下代碼
string str = "Server=127.0.0.1;User ID=root;Password=123456;Database=test;CharSet=gbk;";
MySqlConnection con = new MySqlConnection(str);//實例化鏈接
con.Open();//開啟連接
string strcmd = "select * from user";
MySqlCommand cmd = new MySqlCommand(strcmd, con);
MySqlDataAdapter ada = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
ada.Fill(ds);//查詢結果填充數據集
dataGridView1.DataSource = ds.Tables[0];
con.Close();//關閉連接

使用navicat軟體在資料庫test中新建表user,然後新建兩個欄位username和password(圖中的欄位),navicat軟體是mysql的圖形化界面工具,負責新建表以及備份等資料庫操作,直觀地通過界面來操作

7
資料庫建好後就可以執行工程了,單擊顯示按鈕執行結果如下,出現username和password說明資料庫連接成功,由於沒有添加數據所以下面為空

② MFC連接遠程mysql與連接本地資料庫類似嗎

ODBC連接是在系統設置里設定所連接的資料庫的,因此對應用程序來講,ODBC的名字才是所關心的。至於ODBC連接到哪個資料庫,應用程序不需要關心。
也就是說ODBC資料庫是對應用程序透明的。

③ mfc鏈接mysql

一、首先安裝mysql:我這里用的版本是mysql-essential-5.1.45-win32.msi。安裝時遇到一個小問題在這里說一下:首次安裝到最後一步啟動服務時卡住了,電腦死機,我強制退出,結果不能正常運行,然後卸載重裝,由於第一次設置了密碼,即使卸載了文件依然存在,所以第二次安裝遇到設置密碼時它出現要輸入前一次設置的密碼,在這里什麼都不要輸入,不然在最後一步會出錯(我重裝了好幾次,才在上查到是這個問題)。

2
二、VC6.0的設置
(1)打開VC6.0 工具欄Tools菜單下的Options選項,在Directories的標簽頁中右邊的「Show directories for:」下拉列表中選中「Includefiles」,然後在中間列表框中添加你本地安裝MySQL的include目錄路徑。(我的是D:\Program Files\MySQL\MySQL Server 5.0\include)。
(2)在上面說到的「Show directories for:」下拉列表中選中「Library files」,然後添加你本地安裝MySQL的Lib目錄路徑。Lib目錄下還有debug和opt兩個目錄,建議選debug。(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib\debug)。
(3)在「Project settings->Link:Object/library moles」裡面添加「libmysql.lib」。
(4)在你要連接資料庫的文件里加入#include "winsock.h"和#include "mysql.h"兩個文件,這里要注意這兩個頭文件的順序不要顛倒,否則會報錯(這個問題害我了一個上午)。

3
三、資料庫、表的創建
打開「開始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe」,如果沒有設置密碼就直接按回車,會提示伺服器啟動成功。
mysql> SHOW DATABASES;//顯示所有的資料庫,注意一定要 敲「;」後再按回車
mysql> CREATE DATABASE mydb;//創建資料庫mydb
mysql> USE mydb;//選擇你所創建的資料庫mydb
mysql> SHOW TABLES; //顯示資料庫中的表
mysql> CREATE TABLE mytable (username VARCHAR(50), password VARCHAR(200),);//創建一個表mytable: 用戶名;密碼
mysql> DESCRIBE mytable;//顯示表的結構

4
四、VC編程
MYSQL mysql; //資料庫連接句柄
mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"localhost","root","dxd","mydb",3306,NULL,0))
{//mydb為你所創建的資料庫,3306為埠號,可自行設定
AfxMessageBox("資料庫連接失敗");
return FALSE;
}

5
五、通過上述設置、連接即可對資料庫操作了。

④ mfc 如何接收mysql資料庫數據

1、最簡單的方式:
下載一個MYSQL ODBC驅動,並安裝
2、設置一個MYSQL ODBC數據源
3、MFC中調用該數據源
4、具體進行資料庫何種操作,隨意
5、更多交流可參考我空間主頁有關文章。

⑤ MFC怎麼連接MYSQL資料庫求詳細。。

用ADO連接SQL資料庫
步驟如下:
1,在頭文件"StdAfx.h"中導入#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF"),記住把這句話放到endif的後面,不然會報錯,這樣處理好之後,編譯後又一個警告,可以忽略
2,在對話框的OnInitDialog()函數中寫上"::CoInitialize(NULL);::AfxOleInit(); 」 在主程序的初始化函數中,它就可以寫一次
3,在對話框類的頭文件中,聲明如下變數:_ConnectionPtr m_pConnection;_RecordsetPtr pRst;
連接資料庫的代碼如下:
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");

if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=資料庫的驅動器名稱;Integrated Security=SSPI;Persist Security Info=False;Data Source=資料庫伺服器名;Initial Catalog=連接的資料庫名; User ID=登陸資料庫的名稱;Password=登陸資料庫的密碼;","","",adModeUnknown);
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
」資料庫的驅動器名稱「在控制面板里,以大圖標查看,可以看到一個"ODBC",雙擊打開,在」驅動程序「裡面在最下面有兩個」SQL Server"和「SQL Native Client"如果你是2000的SQL版本,就選」SQL Server"及「Provider=SQL Server"2005的"Provider=SQL Native Client"Data Source=? ,?的值可以是」localhost"也可以是你的資料庫伺服器的名稱,連接資料庫的時候可以看到,復制一下就可以了。
處理完之後就可以連接到你想要連接的資料庫上了!你下次給點分把!!!

⑥ 如何用MFC從MYSQL中讀取數據

//下面的代碼是一個實現C++連接MYSQL資料庫的很好的例子
//這里用了建表,插入,檢索,刪表等常用功能
//我用VC++6.0生成,已經成功連接了。
//在VC++6.0中要想把做一下兩步准備工作才可以。
//(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 6.0\include
//(2)Tools->Options->Directories->Library files中添加C:\Program Files\MySQL\MySQL Server 6.0\lib\opt
//其實就是將頭文件和庫文件包含進來
//我覺得這個例子寫的很好,再結合自己的試驗,特地介紹給大家!

#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")

//單步執行,不想單步執行就注釋掉
#define STEPBYSTEP

int main() {
cout << "****************************************" << endl;

#ifdef STEPBYSTEP
system("pause");
#endif

//必備的一個數據結構
MYSQL mydata;

//初始化資料庫
if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
} else {
cout << "mysql_library_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//初始化數據結構
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
} else {
cout << "mysql_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//在連接資料庫之前,設置額外的連接選項
//可以設置的選項很多,這里設置字元集,否則無法處理中文
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
} else {
cout << "mysql_options() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//連接資料庫
if (NULL
!= mysql_real_connect(&mydata, "localhost", "root", "test", "test",
3306, NULL, 0))
//這里的地址,用戶名,密碼,埠可以根據自己本地的情況更改
{
cout << "mysql_real_connect() succeed" << endl;
} else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//sql字元串
string sqlstr;

//創建一個表
sqlstr = "CREATE TABLE IF NOT EXISTS user_info";
sqlstr += "(";
sqlstr +=
"user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";
sqlstr +=
"user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";
sqlstr +=
"user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";
sqlstr += ");";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() create table succeed" << endl;
} else {
cout << "mysql_query() create table failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//向表中插入數據
sqlstr =
"INSERT INTO user_info(user_name) VALUES('公司名稱'),('一級部門'),('二級部門'),('開發小組'),('姓名');";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() insert data succeed" << endl;
} else {
cout << "mysql_query() insert data failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//顯示剛才插入的數據
sqlstr = "SELECT user_id,user_name,user_second_sum FROM user_info";
MYSQL_RES *result = NULL;
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() select data succeed" << endl;

//一次性取得數據集
result = mysql_store_result(&mydata);
//取得並列印行數
int rowcount = mysql_num_rows(result);
cout << "row count: " << rowcount << endl;

//取得並列印各欄位的名稱
unsigned int fieldcount = mysql_num_fields(result);
MYSQL_FIELD *field = NULL;
for (unsigned int i = 0; i < fieldcount; i++) {
field = mysql_fetch_field_direct(result, i);
cout << field->name << "\t\t";
}
cout << endl;

//列印各行
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while (NULL != row) {
for (int i = 0; i < fieldcount; i++) {
cout << row[i] << "\t\t";
}
cout << endl;
row = mysql_fetch_row(result);
}

} else {
cout << "mysql_query() select data failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//刪除剛才建的表
sqlstr = "DROP TABLE user_info";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() drop table succeed" << endl;
} else {
cout << "mysql_query() drop table failed" << endl;
mysql_close(&mydata);
return -1;
}
mysql_free_result(result);
mysql_close(&mydata);
mysql_server_end();

system("pause");
return 0;
}

⑦ mfc中查詢MySQL的數據的代碼

MFC程序訪問資料庫不是那麼簡單的,需要很多初始化代碼,建立ADO連接並使用介面。
網上很多相關完整資料,搜「VC ADO MYSQL」,灰常多。

下面是一個比較精煉的描述:
1、應用程序的stdafx.h頭文件中(也可以在其他合適的地方)包含如下語句。

#import "C://program files//common files//system//ado//msado15.dll"
no_namespace rename ("EOF", "adoEOF")

2、鏈接資料庫

CoInitialize(NULL);
//初始化Com組件

_ConnectionPtr
conPtr; //資料庫鏈接指針

//
conPtr.CreateInstance("ADODB.Connection");
//Connection用於與資料庫伺服器的鏈接

conPtr.CreateInstance(__uuidof(Connection));
//Connection用於與資料庫伺服器的鏈接另一種方式

try

{

conPtr->ConnectionTimeout = 5; //設置連接時間

//
MySqlTest為數據源名 localhost表示本地
root表示用戶名 sa表示密碼

//鏈接方式1,使用這種方式鏈接時要注意在設置數據源時一定要選擇一個資料庫

//conPtr->Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///連接MySql資料庫(測試成功)

//鏈接方式2採用這種方式鏈接時在創建數據源時沒有必要選擇一個資料庫 conPtr->Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///連接MySql資料庫(測試成功)

}

catch(_com_error e) //捕捉異常

{

AfxMessageBox(e.ErrorMessage());

}

CoUninitialize(); //釋放com組件//不知是否有必要

3、訪問資料庫

_RecordsetPtr recordPtr;//數據集指針

recordPtr.CreateInstance(__uuidof(Recordset));

CString
cmdStr=_T("select name,stuno from
student");//student為表名 該表中有兩個欄位name(字元型)stuno(int型)

try

{

recordPtr->Open(_variant_t(cmdStr),

conPtr.GetInterfacePtr(),

adOpenDynamic,

adLockOptimistic,

adCmdText);

}

catch
(_com_error e)

{

AfxMessageBox(e.Description());

}

while
(!(recordPtr->adoEOF))

{//獲取記錄

CString
name=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;

int
no=recordPtr->GetCollect(_variant_t("stuno")).intVal;

recordPtr->MoveNext();

}

recordPtr->Close();//關閉記錄集

recordPtr.Release();//釋放空間

conPtr->Close();//關閉連接

conPtr.Release();//釋放空間

⑧ 關於MFC連接MySQL資料庫的問題

我也遇到了,不知道為啥

⑨ mfc中子對話框如何訪問資料庫(mysql)。詳細解答。

定義一個全局的連接,類似於全局變數那樣,子對話框就可以使用%

熱點內容
c語言多次輸入數據 發布:2024-05-09 03:12:50 瀏覽:737
pythonide使用 發布:2024-05-09 02:56:52 瀏覽:349
社區電商源碼 發布:2024-05-09 02:33:00 瀏覽:149
遼事通登記需要的密碼是什麼 發布:2024-05-09 02:25:45 瀏覽:283
雲伺服器選擇什麼系統 發布:2024-05-09 01:55:51 瀏覽:968
mel腳本編程全攻略 發布:2024-05-09 01:54:43 瀏覽:479
如何在機房安裝ntp伺服器 發布:2024-05-09 01:13:57 瀏覽:206
ideajavaidea 發布:2024-05-09 01:02:14 瀏覽:965
oas存儲 發布:2024-05-09 00:57:49 瀏覽:801
android點擊彈出菜單 發布:2024-05-09 00:56:52 瀏覽:99