您好,欢迎访问一九零五行业门户网

MFC 对MYSQL数据库相关操作

记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用。虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的。 mfc连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用mys
    记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用。虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的。
    mfc连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用mysql提供的c语言api来进行操作蛮方便的,所以在此记录下相关的操作。
    要用mysql提供的c语言api,首先要包含api的头文件目录,也就是在mfc工程属性中的“包含目录”下添加mysql安装目录的“include”文件夹。因为api是以动态链接库的形式打包的,所以还要在mfc工程属性中的“库目录”下添加mysql安装目录的“lib”文件夹,结果如下图所示:
因为是动态链接库,所以在做完上面的配置后,要将mysql安装目录下的libmysql.dll文件拷贝到mfc工程目录下,如果以后要发行的话这个也要打包进去。昨晚这一步,我们只需要在用到mysql的头文件中包含mysql头文件就可以正常使用此数据库了。代码如下:
#include winsock.h//因为数据库是通过网络连接的,必须包含网络相关头文件#include mysql.h//这个没什么好说的,mysql头文件自然要包含 #pragma comment(lib,libmysql.lib)//附加依赖项,也可以在工程属性中设置
做完上面的配置,我们已经可以正常的使用mysql提供的api了,下面分门别类的来讲讲具体的操作。
连接数据库:
mysql m_sqlcon;mysql_res* res;//记录函数返回mysql_row row;//记录行数mysql_init(&m_sqlcon);//初始化数据库对象if (!mysql_real_connect(&m_sqlcon, localhost, root, 123, test, 3306, null, 0))//localhost:服务器地址,可以直接填入ip;root:账号;123:密码;test:数据库名;3306:网络端口 { afxmessagebox(_t(数据库连接失败!)); return;}else//连接成功则继续访问数据库,之后的相关操作代码基本是放在这里面的{ afxmessagebox(_t(数据库连接成功!));}mysql_close(&m_sqlcon);//关闭mysql连接

得到数据库中表数据:
mysql_query(&m_sqlcon, set names 'gb2312');//设置数据库字符格式,解决中文乱码问题if (mysql_real_query(&m_sqlcon, select * from 物料属性, (unsigned long)strlen(select * from 物料属性)))// 查询数据库中的物料属性表 {return;}res = mysql_store_result(&m_sqlcon);//得到存储结果集 if (null == res)//如果为空则返回{ return; }int listrow = 0;while (row = mysql_fetch_row(res))//重复读取行,把数据放入列表中,直到row为null { for (int rols = 0; rols insertitem(listrow, myreaddata);//添加第一个* } else { list->setitemtext(listrow, rols, myreaddata); } } listrow++;}
清空数据表内容:
mysql_query(&m_sqlcon, set names 'gb2312');//设置数据库字符格式,解决中文乱码问题char *mysqlstatements = delete 物料属性.*from 物料属性;//sql操作语句mysql_real_query(&m_sqlcon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//清空物料属性表
插入数据表内容:
sprintf_s(mysqlstatements, insert into 物料属性(物料编号,物料名称,所属类别,计量单位,样品单价,批量单价) value('%s', '%s', '%s', '%s', '%s', '%s'),mysqlinsertpoint[0], mysqlinsertpoint[1], mysqlinsertpoint[2], mysqlinsertpoint[3], mysqlinsertpoint[4], mysqlinsertpoint[5]); //sql操作语句mysql_real_query(&m_sqlcon, mysqlstatements, (unsigned long)strlen(mysqlstatements));//插入数据到物料属性表
其它类似信息

推荐信息