怎样在C++中调用MYSQL数据库中的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在C++中调用MYSQL数据库中的数据相关的知识,希望对你有一定的参考价值。
我用的是VC6.0,首先应该是得把C++和数据库建立连接吧。
然后我想在我的C++程序里调用mysql数据库中的数据,而且能够实现增加数据,删除数据等功能。。
希望高手稍详细的说明下,我是愿意学的。。谢谢
1)初始化一个连接句柄
2)建立连接
所用到的函数如下:
MYSQL *mysql_init(MYSQL *connection); // 初始化连接句柄
//成功返回MySQL结构指针,失败返回NULL
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags); //建立连接
//成功返回MySQL结构指针,失败返回NULL
以下是完整实例:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <mysql/mysql.h>
using namespace std;
void mysql_err_function(MYSQL * connection);
int main()
//freopen("input.txt","r",stdin);
MYSQL * connection;
connection = mysql_init(NULL);
if (!connection)
cout << "mysql_init failed!" << endl;
exit(-1);
if (!mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0))
cout << "Connection To MySQL failed!" << endl;
mysql_err_function(connection);
cout << "Connection To MySQL Server is Success..." << endl;
string str;
getline(cin,str);
int res = 0;
int affected_count = 0;
while (str != "close" && str != "" && !res)
res = mysql_query(connection,str.c_str());
affected_count += mysql_affected_rows(connection);
if (res)
if (mysql_errno(connection))
cout << "Error " << mysql_errno(connection) << " : "
<< mysql_error(connection) << '\n' << endl;
break;
getline(cin,str);
cout << "Have affected " << affected_count << " rows!" << endl;
mysql_close(connection);
cout << "Connection To MySQL Server is closed..." << endl;
return 0;
void mysql_err_function(MYSQL * connection)
if (mysql_errno(connection))
cout << "Error " << mysql_errno(connection) << " : "
<< mysql_error(connection) << endl;
exit(-1);
参考技术B 建立一个空的控制台程序,建立一个cpp文件,在其中加入如下代码。代码部分:
Cpp代码
#include<winsock2.h>
//定义socket
#include<iostream>
#include"mysql.h"
//#pragma comment( lib, "libmysql.lib");
//此句话和在附加依赖项中增加libmysql.lib 的功能一样
usingnamespace std;
int main(char **args)
MYSQL mysql;
mysql_init(&mysql);
if (mysql_real_connect(&mysql,"localhost","root","","test",3306,0,0))
cout<<"ok"<<endl;
return 0;
else
int i = mysql_errno(&mysql);
constchar * s = mysql_error(&mysql);
cout << s<<endl;
#include<winsock2.h>
//定义socket
#include<iostream>
#include"mysql.h"
//#pragma comment( lib, "libmysql.lib");
//此句话和在附加依赖项中增加libmysql.lib 的功能一样
usingnamespace std;
int main(char **args)
MYSQL mysql;
mysql_init(&mysql);
if (mysql_real_connect(&mysql,"localhost","root","","test",3306,0,0))
cout<<"ok"<<endl;
return 0;
else
int i = mysql_errno(&mysql);
constchar * s = mysql_error(&mysql);
cout << s<<endl;
相关设置:
1、附加包含头文件的目录,include就是mysql-5.0.27-win32\Include文件夹。
2、附加库目录,MySql lib中的文件就是mysql-5.0.27-win32\lib\opt中的文件
3、附加依赖项,名称为libmysql.lib
4、将libmysql.dll拷贝到debug文件夹中,libmysql.dll在lib文件夹中有本回答被提问者采纳 参考技术C include "mysql.h"
然后调用mysql API库
在c语言中怎样用c++类中的对象调用c++类中的方法?
这个问题很有意思,我之前还没碰到过呢,我帮你在全球最大的编程论坛stackoverflow上搜了一个答案:这个答案大意是说,C语言没有this指针,所以要自己写一个wrap API来封装C++的对象。
这个论坛高手云集,包括很多业界大拿,所以这个答案还是很可信的。下面的api.h 就是你要写的wrap API
C has no thiscall notion. The C calling convention doesn't allow directly calling C++ object member functions.
Therefor, you need to supply a wrapper API around your C++ object, one that takes the this pointer explicitly, instead of implicitly.
Example:
// C.hpp
// uses C++ calling convention
class C
public:
bool foo( int arg );
;
C wrapper API:
// api.h
// uses C calling convention
#ifdef __cplusplus
extern "C"
#endif
void* C_Create();
void C_Destroy( void* thisC );
bool C_foo( void* thisC, int arg );
#ifdef __cplusplus
#endif
Your API would be implemented in C++:
#include "api.h"
#include "C.hpp"
void* C_Create() return new C();
void C_Destroy( void* thisC )
delete static_cast<C*>(thisC);
bool C_foo( void* thisC, int arg )
return static_cast<C*>(thisC)->foo( arg );
参考技术A 之间的差异的C语言和C + +有很多:
新的程序程序思维,C语言是面向过程的,和C + +对象。
2,C语言的标准库,他们是松散的,但在头文件中相同的功能和C + +的大部分功能都集成非常紧密,特别是C语言不是在C + + API Window系统最API的有机结合,是一个集体。但你也可能是一个单独的API调用。
3,特别是在C + +图形处理,图形和语言有很大的不同。在C语言中的图形处理功能,基本上不被使用在C + +。 C语言标准不包括图形处理。
4,C和C + +的概念的结构,但只有在C语言结构的成员变量,并没有在C + +结构的成员方法,它可以有自己的成员变量和成员函数。在C语言中的结构成员是公共的,想参观它可以访问,VC + +,它不添加预选赛私人。
C语言写了很多方面的程序,但C + +可以写出更多更好的C + +写基于DOSR程序,写一个DLL,写控制,书写系统。
语言程序文件的组织是松散的,几乎所有的被处理;而C + +项目文件组织,每个文件分类清晰。
6,C + + IDE中是很聪明,和VB,部分功能可能比VB强。
C + +可以自动生成你想要的程序,这样就可以节省大量的时间结构。可用的工具有很多,如添加MFC类时,添加变量。
8,一个额外的工具,在C + +系统的分析了很多,你可以查看API;视图控制。
9,调试功能强大和多样化
* C语言是面向过程的,而C + +面向对象* 参考技术B C语言是面向程序的语言,而C++是面向对象的。(对象即类)
C语言不支持对象这一概念,所以不能使用类。你可以用C++把你要的方法编译成dll,
然后再在C语言里面load这个dll中你要的方法就行了。
以上是关于怎样在C++中调用MYSQL数据库中的数据的主要内容,如果未能解决你的问题,请参考以下文章
python连接MYSQL数据库,调用update语句后无法更新数据,求大神解决