数据库与vs的连接
新建一个MFC基于对话框的项目后,更改属性, 其中需要将include(里面都是MySQL的头文件)lib是库文件,将.dll放入与.exe同级目录下,或放入系统里(c:\windows\system32)

封装一个MySQL类
CMysql.h
#pragma once
#include <mysql.h> //#include <WinSock2.h>
#pragma comment(lib,"libmysql.lib")
//
#include <list>
using namespace std; class CMySql
{
public:
CMySql(void);
~CMySql(void);
public:
bool ConnectMySql(char *host,char *user,char *pass,char *db);
void DisConnect();
bool SelectMySql(char* szSql,int nColumn,list<string>& lstStr); //更新:删除、插入、修改
bool UpdateMySql(char* szSql); private:
MYSQL *sock;
MYSQL_RES *results;
MYSQL_ROW record; };
CMysql.cpp
#include "stdafx.h"
#include "CMySql.h" CMySql::CMySql(void)
{
/*这个函数用来分配或者初始化一个MYSQL对象,用于连接mysql服务端。
如果你传入的参数是NULL指针,它将自动为你分配一个MYSQL对象,
如果这个MYSQL对象是它自动分配的,那么在调用mysql_close的时候,会释放这个对象*/
sock = new MYSQL;
mysql_init(sock );
mysql_set_character_set(sock,"gb2312"); //gb2312 中华人民共和国简体字标准
} CMySql::~CMySql(void)
{
if(sock)
{
delete sock;
sock = NULL;
} } void CMySql::DisConnect()
{
mysql_close(sock);
} bool CMySql::ConnectMySql(char *host,char *user,char *pass,char *db)
{ if (!mysql_real_connect(sock, host, user, pass, db, , NULL, CLIENT_MULTI_STATEMENTS))
{
//连接错误
return false;
} return true;
} bool CMySql::SelectMySql(char* szSql,int nColumn,list<string>& lstStr)
{
//mysql_query() 函数用于向 MySQL 发送并执行 SQL 语句
if(mysql_query(sock,szSql))return false; /*·mysql_store_result 对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等)
返回值:
. CR_COMMANDS_OUT_OF_SYNC 以不恰当的顺序执行了命令。
· CR_OUT_OF_MEMORY 内存溢出。
· CR_SERVER_GONE_ERROR MySQL服务器不可用。
· CR_SERVER_LOST 在查询过程中,与服务器的连接丢失。
· CR_UNKNOWN_ERROR 出现未知错误。*/
results=mysql_store_result(sock);
if(NULL == results)return false;
while (record = mysql_fetch_row(results))
{ for(int i = ;i < nColumn;i++)
{
lstStr.push_back(record[i]);
} } return true;
} bool CMySql::UpdateMySql(char* szSql)
{
if(!szSql)return false; if(mysql_query(sock,szSql))return false; return true;
}
注册按钮实现函数:
void CMysqlDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
char sz[] = {};
sprintf_s(sz,"insert user values ('%s','%s')",m_edituser,m_editpsw);
if(theApp.m_mysql.UpdateMySql(sz))
{
MessageBox(_T("注册成功"));
}
else
MessageBox(_T("注册失败"));
}
登陆按钮实现函数:
void CMysqlDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
char sz[] = {};
list<string> lststr;
string password;
sprintf_s(sz,"select password from user where username = '%s'",m_edituser);
if(theApp.m_mysql.SelectMySql(sz,,lststr))
{
password = lststr.front();
lststr.pop_front();
if(strcmp(password.c_str(),m_editpsw) == )
{
MessageBox("登陆成功");
CMysqlDlg::OnOK();
MyDlg mydlg;
theApp.m_pMainWnd = &mydlg;
mydlg.DoModal();
}
else
{
MessageBox("登陆失败");
}
}
}
OnOK是关闭窗口函数;

更新按钮的实现
void MyDlg::OnBnClickedButton1()
{
UpdateData();
// TODO: 在此添加控件通知处理程序代码
if(theApp.m_mysql.UpdateMySql(m_editstr.GetBuffer()))
{
MessageBox("登陆成功");
}
}
其中需要注意的:CString 转成 char*类型的函数GetBuffer()
String 的内部是用char* 来封装的,装成char*的函数是c_str()
数据库与vs的连接的更多相关文章
- web/jdbc数据库带实例名连接2008
--------------------------数据库带实例名连接2008-------------------------------------<property name=" ...
- 【转】mysql数据库中实现内连接、左连接、右连接
[转]mysql数据库中实现内连接.左连接.右连接 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来 首先创建数据库中的表,数据库代码如下: /* Navicat MyS ...
- 关闭数据库下的所有连接操作 sql存储过程
use master go )) as begin ),) declare @spid int set @sql='declare getspid cursor for select spid fro ...
- web.config中配置数据库(多数据)连接的两种方式
这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在 ...
- JDBC连接各种数据库的方法,连接MySql,Oracle数据库
JDBC连接各种数据库的方法: JDBC编程步骤: 1.导入jar包 2.注册驱动 3.获取数据库连接对象 4.定义SQL语句 5.获得执行SQL语句对象statemnet 6.执行SQL语句 7.处 ...
- Java连接Oracle数据库的三种连接方式
背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...
- ORA-12519, TNS:no appropriate service handler found(数据库上当前的连接数目已经超过最大值)
报错: ORA-12519, TNS:no appropriate service handler foundThe Connection descriptor used by the client ...
- Robomongo 0.9.0 连接mongo数据库时,提示连接失败 的解决方案
Robomongo 0.9.0 连接mongo数据库时,提示连接失败.(IP和端口号确定是对的) 基本注意点: 1.mongodb服务打开,打开时,指定端口号,默认为27017,使用默认值,则不用指定 ...
- PHP 数据库 ODBC创建 ODBC 连接
PHP 数据库 ODBC ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数 ...
- (十一) 数据库查询处理之连接(Join)
(十一) 数据库查询处理之连接(Join) 1. 连接操作的一个例子 把外层关系和内层关系中满足一定关系的属性值拼接成一个新的元组 一种现在仍然十分有用的优化思路Late Materializatio ...
随机推荐
- 【python】使用asyncore进行异步通信
参考博文:http://blog.csdn.net/livefun/article/details/8721772 参考博文:https://www.cnblogs.com/tomato0906/ar ...
- linux(redhat) mysql 的安装
教程链接 注意 1.检查版本32/64位的时候 输入 name -a 输出为 Linux localhost.localdomain 2.6.18-53.el5 #1 SMP Wed Oct 10 1 ...
- 修改Sublime Text3 的侧边栏字体大小
修改Sublime Text3 的侧边栏字体大小 1. 安装”Package Control Package Control”,建议使用官方安装命令:https://sublime.wbond.net ...
- 【英语】Bingo口语笔记(81) - wear系列
- 【解题报告】牡丹江现场赛之ABDIK ZOJ 3819 3820 3822 3827 3829
那天在机房做的同步赛,比现场赛要慢了一小时开始,直播那边已经可以看到榜了,所以上来就知道A和I是水题,当时机房电脑出了点问题,就慢了好几分钟,12分钟才A掉第一题... A.Average Score ...
- bzoj 3192 删除物品
Written with StackEdit. Description 箱子再分配问题需要解决如下问题: (1)一共有\(N\)个物品,堆成\(M\)堆. (2)所有物品都是一样的,但是它们有不同的优 ...
- win10环境变量的配置
c盘->环境变量: 1.添加变量名和变量值 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_161 2.添加变量名和变量值 变量名:JAVA_H ...
- Spring中的c3p0配置
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51162560 今天,我们就来详细谈谈Spring中的c3p0配置问题,好了,不耽搁 ...
- Weex 解析(二)—— NativeBridge
(本篇幅主要讲解Weex 中iOS native与js交互实现) 大纲: weex 总框架预览 iOS NativeBridge总设计原理 一.weex 总框架预览 在写NativeBridge 总设 ...
- 前阿里DT总监欧吉良猝死:一代大神勾践陨落滴滴
欧吉良 阿里巴巴集团数据技术及产品部(DT)总监,淘宝网&天猫BI团队负责人,集团数据委员会数据运营组组长,阿里数据大学校长:2007年7月正式加入阿里,先后在支付宝.天猫.淘宝.数据技术及产 ...