前置条件
在Visual Studio中进行配置
VC++目录下
包含目录添加路径:C:\Program Files\MySQL\MySQL Server 8.0\include
库目录添加路径:C:\Program Files\MySQL\MySQL Server 8.0\include
链接器
常规下
附加库目录添加路径:C:\Program Files\MySQL\MySQL Server 8.0\lib
输入下
附加依赖项添加:libmysql.lib
代码实现
连接数据库
#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASSWD "123456"
#define DB_NAME "database"
#define DB_PORT 3306
bool connect_db(MYSQL& mysql)
{
//初始化数据库句柄
mysql_init(&mysql);
//设置字符编码
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
if (mysql_real_connect(&mysql, DB_HOST, DB_USER, DB_PASSWD, DB_NAME, DB_PORT, NULL, 0) == NULL)
{
printf("数据库报错:%s", mysql_error(&mysql));
return false;
}
return true;
}
从数据库中获取表中内容
//传入userinfo结构体和数据库user表中的id
bool fetch_table_info(userinfo& user, int user_id)
{
MYSQL mysql;
MYSQL_RES* res; //查询结果库
MYSQL_ROW row; //记录结构体
char sql[256];
bool ret = false;
//连接数据库
if (connect_db(mysql) == false)
{
return false;
}
//根据数据库获取用户信息(从users表中获取用户id,姓名和年龄)
snprintf(sql, 256, "select id, name, age from users where id=%d;", user_id);
ret = mysql_query(&mysql, sql); //成功返回0
if (ret)
{
printf("数据库查询出错:%s错误原因:%s", sql, mysql_error(&mysql));
mysql_close(&mysql);
return false;
}
//获取结果
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (row == NULL)
{
mysql_free_result(res);
mysql_close(&mysql);
return false;
}
user.id = row[0];
user.name = row[1];
user.age = row[2];
if (debug) printf("id:%d ,name:%s ,age:%d", user.id, user.name.c_str(), user.age);
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
return true;
}