vs2010 mfc 怎么链接 mysql数据库

vs2010 mfc 怎么链接 mysql数据库,第1张

新建一个工程名叫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.1User ID=rootPassword=123456Database=testCharSet=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类中的数据库类结合listcontrol控件完成。listcontrol控件用于查询记录集的显示。

数据库类包括CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)。 其中: CDatabase类对象提供了对数据源的连接,对数据源进行 *** 作。 CRecordView类对象能以控制的形式 显示数据库记录。这个视图是直接连到一个CRecordSet对象的表视图。 CRecordSet类对象提供了从数据源 中提取出的记录集。

首先应用AppWizard来建立一个ODBC的应用程序框架,注意应包括头文件afxdb.h。 其中两个最重要的类是CDatabase和CRecordSet。下面说一下数据库 *** 作的方法,以SQL为例:

方法一:查询记录使用CRecordSet::Open()和 CRecordSet::Requery()成员函数。在使用CRecordSet类对象之前,必须使用 CRecordSet::Open()函数来获得有效的记录集。一旦已经使用过CRecordSet::Open() 函数,再次查询时就可以应用CRecordSet::Requery()函数。

方法二:通 过调用CDatabase::ExecuteSQL()函数来完成SQL语句的直接执行: 如下代码所示 BOOL CDB::ExecuteSQLAndReportFailure(const CString&strSQL) { TRY { m_pdb->ExecuteSQL(strSQL)//直接执行SQL语句 } CATCH (CDBException,e) { CString strMsgstrMsg.LoadString(IDS_EXECUTE_SQL_FAILED)strMsg+=strSQLreturn FALSE} END_CATCH return TRUE}

其中,方法一仅提供查询记录的功能;方法二直接对数据库进行 *** 作,可以进行查询、修改、删除、添加记录等一系列功能,具有更强的灵活性,但在使用时需要谨慎。

再说一下listcontrol控件的使用:

它主要用于数据的显示。关键用到的函数是InsertColumn()和SetItemText()函数,您可以参照mfc类帮助文件。

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=MySqlTestserver=localhost","root","sa",adModeUnknown)///连接MySql数据库(测试成功)

//链接方式2采用这种方式链接时在创建数据源时没有必要选择一个数据库 conPtr->Open("DSN=MySqlTestserver=localhostdatabase=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()//释放空间


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7507956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存