您的位置:首页 > 编程语言 > C语言/C++

C++ 通过ADO.Net实现与MySql数据库连接 入门教程

2016-07-15 17:15 615 查看

C++ 通过ADO.Net实现与MySql数据库连接 入门教程

前言

由于项目需要实现一个登录注册界面的功能。考虑到数据存储的问题,自己熟悉的Java与Android可以很方面的通过JDBC或内置的类实现与数据库的交互。所以考虑尝试用C++连接电脑上已经安装的MySql数据库实现数据存储的功能。折腾了一整天,终于完成了自己需要的功能。特地来写一篇博文记录一下基本的开发过程。

一、开发环境

Win8

VS 2013

Xampp 中的 MySql

MySQL Workbench (MySql数据库可视化工具)

二、开发过程

1.在电脑上安装MySql,推荐xampp,超级好用。可视化工具我用的是MySQL Workbench

2.在MySql创建好数据库后需要注册ODBC数据源,操作如下图

打开控制面板



搜索数据源



点击进入管理工具选择相应的





点击“添加” ,先选择MySql对应的驱动

如果找不到驱动,切换下32位(64位)的看有没有,如果还没有,搜索 mysql-connector-odbc 去官网下载对应的驱动。

注意一定一定要下载与MySql数据库版本对应的驱动,血的教训!!!



选择好驱动后,选择数据库



到这里完成ODBC数据源的注册工作

3.创建项目(我做的是C++/CLR窗口项目)

注意一定要看有没有引入命名空间

using namespace System::Data;
using namespace System::Data::Odbc;


4.编写相关代码完成与数据库的交互

获取数据库中的数据

DataSet^ UserDataSet;
OdbcDataAdapter^ Adapter;
OdbcConnection^ Conn = gcnew OdbcConnection("DSN=tm_db;UID=root;PWD=;"); //注意没密码则PWD=;
Adapter = gcnew OdbcDataAdapter("select语句", Conn);
UserDataSet = gcnew DataSet();
Adapter->Fill(UserDataSet, "tbl_user");

for each(DataRow^ row in UserDataSet->Tables["tbl_user"]->Rows){
// 所有数据都封装在了Rows,可查询相关API获取你需要的数据
str_pwd += row["password"];
}


向数据表中添加书籍数据

DataSet ^ UserData;
OdbcDataAdapter^ Adapter;
OdbcConnection^ Conn = gcnew OdbcConnection("DSN=tm_db;UID=root;PWD=;");
Adapter = gcnew OdbcDataAdapter("select * from tbl_user", Conn);
UserData = gcnew DataSet();
Adapter->Fill(UserData, "tbl_user");
DataTable ^ userTable = UserData->Tables["tbl_user"];
DataRow ^ NewRow;
NewRow = userTable->NewRow();
NewRow["account"] = tb_account;
NewRow["password"] = tb_pwd;
userTable->Rows->Add(NewRow);
try{
UserData = UserData->GetChanges();
if (UserData){
OdbcCommandBuilder ^ bu = gcnew OdbcCommandBuilder(Adapter);
Adapter->Update(UserData,"tbl_user");
UserData->AcceptChanges();//到这里成功向数据库中插入数据

MessageBoxButtons btn = MessageBoxButtons::OK;
System::Windows::Forms::DialogResult result = MessageBox::Show("用户注册成功!", "提示", btn);
if (result == System::Windows::Forms::DialogResult::OK){
this->Close();
}
}
}
catch (Exception ^ e){
MessageBox::Show(e->Message);
}


三、踩过的坑

1.如果没找到MySql的ODBC驱动器则去官网下载一个,一键安装

2.MySql的ODBC驱动器版本一定要和MySql对应,否则运行的时候后崩溃!!!我因为这个折腾了一个下午!

3.如果数据库登陆没密码,则写成 gcnew OdbcConnection(“DSN=tm_db;UID=root;PWD=;”); 的形式。

四、参考资料

《C++程序设计基础 下》(第四版) 作者:周霭如,徐红云,黄小兵

还有很多很多搜索出来的帖子!这部分知识的帖子超级少!!感谢热爱分享的你们!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ado.net