版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/85234743
安装mysql8.0 x64
创建test数据库,user表,插入数据如下:
+
| id | name | password | email |
+
| 1 | jack | 111 | jack@foobar.com |
| 2 | mary | 222 | mary@foobar.com |
| 3 | john | 333 | john@foobar.com |
| 4 | lesk | 444 | lesk@foobar.com |
| 5 | bety | 555 | bety@foobar.com |
+
创建控制台C++项目
工程–属性–VC++目录–包含目录,将mysql server 8.0\include的绝对路径添加进去,例如C:\Program Files\MySQL\MySQL Server 8.0\include。将MySQL Server 8.0\lib文件夹下的libmysql.lib和libmysql.dll拷贝到工程目录下。
项目要改为x64,否则报错和库不兼容。
写码:
#include "pch.h"
#include <WinSock.h>
#include "mysql.h"
#include <Windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"libmysql.lib")
MYSQL mysql;
MYSQL_FIELD *fd;
char field[32][32];
MYSQL_RES *res;
MYSQL_ROW column;
char query[150];
bool ConnectDatabase();
void FreeConnect();
bool QueryDatabase1();
bool QueryDatabase2();
bool InsertData();
bool ModifyData();
bool DeleteData();
int main(int argc, char **argv)
{
ConnectDatabase();
QueryDatabase1();
InsertData();
QueryDatabase2();
ModifyData();
QueryDatabase2();
DeleteData();
QueryDatabase2();
FreeConnect();
system("pause");
return 0;
}
bool ConnectDatabase()
{
mysql_init(&mysql);
if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "test", 0, NULL, 0)))
{
printf("Error connecting to database:%s\n", mysql_error(&mysql));
return false;
}
else
{
printf("Connected...\n");
return true;
}
}
void FreeConnect()
{
mysql_free_result(res);
mysql_close(&mysql);
}
bool QueryDatabase1()
{
sprintf_s(query, "select * from user");
mysql_query(&mysql, "set names gbk");
if (mysql_query(&mysql, query))
{
printf("Query failed (%s)\n", mysql_error(&mysql));
return false;
}
else
{
printf("query success\n");
}
if (!(res = mysql_store_result(&mysql)))
{
printf("Couldn't get result from %s\n", mysql_error(&mysql));
return false;
}
printf("number of dataline returned: %d\n", mysql_affected_rows(&mysql));
char *str_field[32];
for (int i = 0; i < 4; i++)
{
str_field[i] = mysql_fetch_field(res)->name;
}
for (int i = 0; i < 4; i++)
printf("%10s\t", str_field[i]);
printf("\n");
while (column = mysql_fetch_row(res))
{
printf("%10s\t%10s\t%10s\t%10s\n", column[0], column[1], column[2], column[3]);
}
return true;
}
bool QueryDatabase2()
{
mysql_query(&mysql, "set names gbk");
if (mysql_query(&mysql, "select * from user"))
{
printf("Query failed (%s)\n", mysql_error(&mysql));
return false;
}
else
{
printf("query success\n");
}
res = mysql_store_result(&mysql);
printf("number of dataline returned: %d\n", mysql_affected_rows(&mysql));
for (int i = 0; fd = mysql_fetch_field(res); i++)
strcpy_s(field[i], fd->name);
int j = mysql_num_fields(res);
for (int i = 0; i < j; i++)
printf("%10s\t", field[i]);
printf("\n");
while (column = mysql_fetch_row(res))
{
for (int i = 0; i < j; i++)
printf("%10s\t", column[i]);
printf("\n");
}
return true;
}
bool InsertData()
{
sprintf_s(query, "insert into user values (6, 'lily', '666','lily@sina.cn');");
if (mysql_query(&mysql, query))
{
printf("Query failed (%s)\n", mysql_error(&mysql));
return false;
}
else
{
printf("Insert success\n");
return true;
}
}
bool ModifyData()
{
sprintf_s(query, "update user set email='lesk@163.com' where name='lesk'");
if (mysql_query(&mysql, query))
{
printf("Query failed (%s)\n", mysql_error(&mysql));
return false;
}
else
{
printf("Insert success\n");
return true;
}
}
bool DeleteData()
{
char query[100];
printf("please input the sql:\n");
cin >> query;
if (mysql_query(&mysql, query))
{
printf("Query failed (%s)\n", mysql_error(&mysql));
return false;
}
else
{
printf("Insert success\n");
return true;
}
}
参考地址:
https://www.cnblogs.com/47088845/p/5706496.html
显示如图:
