vs2017c语言连接mysql,C/C++ vs2017连接MySQL数据库 - 增删改查(详细步骤)

#include

#include // mysql文件

#define SQL_MAX 256// sql语句字符数组最大值

// 连接数据库

static bool connectDB(MYSQL &mysql);

// 插入数据

bool addTableData(int id, char *name, int age, char *sex);

// 删除数据

bool delTableData(int id);

// 修改数据

bool altTableData(int id, int age);

// 查询数据

bool queTableData();

int main(void) {

delTableData(1);

addTableData(1, (char *)"小明", 20, (char *)"男");

altTableData(1, 22);

queTableData();

return 0;

}

/*****************************************************

* 功能:连接connect_c_cpp_text数据库,并选择数据库

*

* 参数:

*mysql - 数据库句柄

*

* 返回值:

*连接成功返回true,连接失败返回false

*****************************************************/

bool connectDB(MYSQL &mysql) {

// 1.初始化数据库句柄

mysql_init(&mysql);

// 2.设置字符编码

mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

// 3.连接数据库

MYSQL *ret = mysql_real_connect(&mysql, "127.0.0.1", "root", "yang", "connect_c_cpp_text", 3306, NULL, 0);

if (ret == NULL) {

printf("数据库连接失败!失败原因:%s\\n", mysql_error(&mysql));

return false;

}

printf("数据连接成功!\\n");

// 选择数据库

int res = mysql_select_db(&mysql, "connect_c_cpp_text");

if (res) {

printf("选择数据库失败!失败原因%s\\n", mysql_error(&mysql));

return false;

}

printf("数据库选择成功!\\n");

return true;

}

/****************************************************

* 功能:向student表中插入一条记录

*

* 参数:

*id - 对应表字段id,编号

*name - 对应表字段name,姓名

*age - 对应表字段age,年龄

*sex - 对应表字段sex,性别

*

* 返回值:

*插入成功返回true,插入失败返回false

****************************************************/

bool addTableData(int id, char *name, int age, char *sex) {

MYSQL mysql;// 数据库句柄

char sql[SQL_MAX];// 存储sql语句

// 连接数据库

if (!connectDB(mysql)) {

return false;

}

// C语言字符串组合

snprintf(sql, SQL_MAX, "INSERT INTO student VALUES(%d, '%s', %d, '%s');", id, name, age, sex);

printf("插入sql语句:%s\\n", sql);

// 执行sql语句,成功返回0

//int ret = mysql_query(&mysql, sql);

int ret = mysql_real_query(&mysql, sql, (unsigned long)strlen(sql));

printf("执行插入语句,插入返回结果:%d\\n", ret);

if (ret) {

printf("插入表数据失败!失败原因:%s\\n", mysql_error(&mysql));

return false;

}

printf("插入表数据成功!\\n");

// 关闭数据库

mysql_close(&mysql);

return true;

}

/*****************************************************

* 功能:删除student表中id字段等于参数id的记录

*

* 参数:

*id - 对应表字段id,编号

*

* 返回值:

*删除成功返回true,删除失败返回false

*****************************************************/

bool delTableData(int id) {

MYSQL mysql;// 数据库句柄

char sql[SQL_MAX];// 存储sql语句

// 连接数据库

if (!connectDB(mysql)) {

return false;

}

// C语言字符串组合

snprintf(sql, SQL_MAX, "DELETE FROM student WHERE id = %d;", id);

printf("删除sql语句:%s\\n", sql);

// 执行sql语句,成功返回0

//int ret = mysql_query(&mysql, sql);

int ret = mysql_real_query(&mysql, sql, (unsigned long)strlen(sql));

printf("执行删除语句,插入返回结果:%d\\n", ret);

if (ret) {

printf("删除表数据失败!失败原因:%s\\n", mysql_error(&mysql));

return false;

}

printf("删除表数据成功!\\n");

// 关闭数据库

mysql_close(&mysql);

return true;

}

/******************************************************

* 功能:根据参数id,修改对应表记录的年龄为参数age

*

* 参数:

*id- 对应表字段id,编号

*age - 对应表字段age,年龄

*

* 返回值:

*修改成功返回true,修改失败返回false

*******************************************************/

bool altTableData(int id, int age) {

MYSQL mysql;// 数据库句柄

char sql[SQL_MAX];// sql语句

// 连接数据库

if (!connectDB(mysql)) {

return false;

}

// C语言组合字符串

snprintf(sql, SQL_MAX, "UPDATE student SET age = %d WHERE id = %d;", age, id);

printf("修改sql语句:%s\\n", sql);

//int ret = mysql_query(&mysql, sql);

int ret = mysql_real_query(&mysql, sql, (unsigned long)strlen(sql));

printf("执行修改语句,修改返回结果:%d\\n", ret);

if (ret) {

printf("数据修改失败!失败原因:%s\\n", mysql_error(&mysql));

return false;

}

printf("修改表数据成功!\\n");

// 关闭数据库

mysql_close(&mysql);

return true;

}

/********************************************************

* 功能:查询student表中所有数据记录,并输出至控制台

*

* 参数:

*无

*

* 返回值:

*查询成功返回true,查询失败返回false

********************************************************/

bool queTableData() {

MYSQL mysql;// 数据库句柄

MYSQL_RES* res;// 查询结果集

MYSQL_ROW row;// 记录结构体

char sql[SQL_MAX];// SQL语句

// 连接数据库

if (!connectDB(mysql)) {

return false;

}

// C语言组合字符串

snprintf(sql, SQL_MAX, "SELECT id, name, age, sex FROM student;");

printf("查询sql语句:%s\\n", sql);

// 查询数据

//int ret = mysql_query(&mysql, "select * from student;");// 等效于下面一行代码

//int ret = mysql_query(&mysql, sql);

int ret = mysql_real_query(&mysql, sql, (unsigned long)strlen(sql));

printf("执行查询语句,查询返回结果:%d\\n", ret);

if (ret) {

printf("数据查询失败!失败原因:%s\\n", mysql_error(&mysql));

return false;

}

printf("数据查询成功!\\n");

// 获取结果集

res = mysql_store_result(&mysql);

// 获取查询到的一行数据

// 给row赋值,判断row是否为空,不为空就打印数据。

while (row =