连接数据库用到的函数包括mysql_init, mysql_real_connect, mysql_close,mysql_query(pConn, “select * from customers”)等
其实所有的数据库操作都是先写个sql语句,然后用mysql_query(&mysql,query)来完成,包括创建数据库或表,增删改查
各个函数用途简介
登录MySQL数据库
MYSQL * STDCALL mysql_init(MYSQL *mysql); //成功返回*mysql指针,失败返回NULL。
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql,
const char *host, //MySQL的IP,远程登录输入远程登录的IP地址
const char *user, //登录用户名
const char *passwd, //登录密码
const char *db, //使用的数据库名称
unsigned int port, //MySQL端口号(0为默认值3306)
const char *unix_socket, //是否使用socket机制登录,NULL:否
unsigned long clientflag); //连接标志,通常为0
//成功返回*mysql指针,失败返回NULL。
操作查询MySQL more
int mysql_query(MYSQL *mysql, const char *query)
//返回值
//如果查询成功,返回0。如果出现错误,返回非0值。
执行由“Null终结的字符串”查询指向的SQL查询。正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号(‘;’)。如果允许多语句执行,字符串可包含多条由分号隔开的语句。请参见25.2.9节,“多查询执行的C API处理”。
mysql_query()不能用于包含二进制数据的查询,应使用mysql_real_query()取而代之(二进制数据可能包含字符‘\0’,mysql_query()会将该字符解释为查询字符串结束)。
如果希望了解查询是否应返回结果集,可使用mysql_field_count()进行检查。请参见25.2.3.22节,“mysql_field_count()”。
设置多语句
mysql_query通常使用单独的SQL语句(不带“;”的),也可调用mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON)指定以分号分隔的多个SQL语句
原型:int mysql_set_server_option(MYSQL *mysql, enum enum_mysql_set_option option)
//返回值
//0表示成功,非0值表示出现错误
MYSQL_OPTION_MULTI_STATEMENTS_ON | 允许多语句支持 |
---|---|
MYSQL_OPTION_MULTI_STATEMENTS_OFF | 禁止多语句支持 |
结束
mysql_free_result(res); //释放储存结果对象
mysql_close(conn); //关闭前面打开的mysql连接
例子
#include "pch.h"
#include <winsock.h>
#include <mysql.h>
//#pragma comment(lib,"libmySQL.lib") //要加不然会编译出错
#include "stdio.h"
#include "string.h"
#include<iostream>
using namespace std;
struct conn_info {
const char *host;
const char *user;
const char *password;
const char *db;
};
struct student
{
char name[10];
char nu[10];
struct student *next;
};
class Mysql
{
public:
/********************************连接数据库*****************************************************/
MYSQL* mysql_connect(conn_info con) {
MYSQL* mysql = mysql_init(NULL);//mysql初始化函数,实例化一个新的对象(NULL为新的对象,否则为初始化以创建的对象)
if (!mysql_real_connect(mysql, con.host, con.user, con.password, con.db, 3306, NULL, 0)) {
//mysql_real_connect(MYSQL *mysq