mysqlODBC驱动下载
1.用ODBC连接mysql
右键空白部分-》类向导-》添加类-》MFC ODBC使用者-》数据源-》机器数据源-》新建-》用户数据源(点击下一步)-》Mysql ODBC Unicode Driver-》完成
填写数据,点击test。连接成功选择OK。
再选择你刚填写的数据库,点击OK;出现下图,选择你要连接的表,确定,完成
出现该错误(fatal error C1189: #error : 安全问题:连接字符串可能包含密码。)请//
2.代码1
说明1:LG.nID是char数组;pSet是在CxxxDlg.h的类中加入数据库类实例
说明2:下面这种方法只用于查询(select)
if (pSet->IsOpen())
pSet->Close();
//如果记录集打开,则先关闭
CString temp(LG.nID);
pSet->m_strFilter.Format(L"id='%s'",temp);//相当于where后面的条件
//id是usres表的字段名,用来指定查询条件
pSet->Open();//里面没有参数就使用m_strFilter;有参数就不能有m_strFilter
if (!pSet->IsEOF()) // 如果打开记录集有记录
{
//pSet.GetFieldValue( L"password" , varPassword );
//pSet.MoveNext();
//MessageBox(L"找到账号");if (pSet->m_password == LG.nPWD){//执行代码}else{//执行代码}}else{//执行代码}
代码2:
说明:用于插入、更新、删除
CString query;
query.Format(L"insert into users values (\"%s\",\"%s\");", id, password);
CDatabase db;
Cusers sj;//Cusers是odbc生成的数据库类名
CString lj = sj.GetDefaultConnect();
if (!db.IsOpen())//判断数据库是否已经被打开
{
BOOL bflag = db.Open(NULL, false, false, lj);//连接数据库
if (!bflag)
{
MessageBox(L"打开数据库失败!\n请重启!");
return;
}
}
try
{
db.ExecuteSQL(query);
}
catch (CDBException *e)
{
e->ReportError(); //报告异常原因,如主键异常
e->Delete();
db.Close();
return;
}
catch (CMemoryException *e)
{
MessageBox(L"数据库内存异常!");
e->Delete();
return;
}
catch (...)
{
MessageBox(L"数据库其它异常!");
return;
}
db.Close();
问题:odbc不支持动态集等:
利用支持ODBC的CRecordset类实现对数据库的操作
CRecordset类的常用成员函数 成员变量 以及操作实例
CRecordset api介绍