前回の記事「MySQLデータベースを接続するC言語(1)」では、vs環境での接続構成に
焦点を当てました。この記事では、データベースの操作に焦点を当てています。
- クエリデータベースの状況を選択します
#include<stdio.h>
#include<mysql.h>
#pragma comment(lib,"libmysql.lib")
int main()
{
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,
"localhost", "root", "***", "db01", 3306, NULL, 0)) {
printf("数据库 连接失败!");
system("pause");
return 0;
}
const char * sql = "select * from breakfast where spam=0";
// 只进行查询,不修改数据库
if (mysql_real_query(&mysql, sql, 37)) {
printf("sql语句执行期间出错!");
system("pause");
return 0;
}
MYSQL_RES *sr; // 结果集,记录查询结果
sr = mysql_store_result(&mysql);
if (sr->row_count == 0) {
printf("sql 语句无返回结果\n");
}
else {
MYSQL_ROW row;
// 打印所有属性列,不考虑索引
while (row = mysql_fetch_row(sr)) {
while (strcmp("", *(row)))
{
printf("%s\t", *(row++));
}
printf("\n");
}
}
mysql_free_result(sr);
mysql_close(&mysql);
system("pause");
}
- クエリ以外のデータベースの状況(挿入、削除、更新など)
#include<stdio.h>
#include<mysql.h>
#pragma comment(lib,"libmysql.lib")
int main()
{
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "***", "db01",
3306, NULL, 0)) {
printf("数据库连接失败!\n");
system("pause");
return 0;
}
const char * sql = "insert into breakfast values('dududu',1,2,3,88.88)";
if (mysql_real_query(&mysql, sql, strlen(sql))) {
printf("sql 语句执行出错\n");
system("pause");
return 0;
}
// mysql_real_query函数判断sql语句是否执行成功
// 对于非select 语句,没有结果集,调用mysql_store_result函数没意义
//MYSQL_RES *sr = mysql_store_result(&mysql);
system("pause");
}