#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 =