第一步,下载并安装MYSQL
mysql官网下载较慢,建议到腾讯软件中心下载->https://pc.qq.com/detail/3/detail_1303.html
安装教程->https://www.runoob.com/w3cnote/windows10-mysql-installer.html
第二步,在数据库中新建表格
打开mysql workbench,点击左上方菜单栏database->connect to database…,输入用户名密码。(也可以直接点击下方MySQL Connections进入)
在左边SCHEMAS区域点击鼠标右键新建一个schema
输入名字并点击apply
(重要的事情说三遍,一定要点击刷新!一定要点击刷新!一定要点击刷新!)
在table选项点击右键可以新建表
修改表的名字并编辑表结构,可以添加键并勾选是否主键、非空、唯一等,然后apply
当然,我们也可以直接用sql命令建表
鼠标移到表格处,表格右方会出现三个小圆图标,从左至右第一个显示表信息,第二个修改表结构,第三个查询表中所有信息
sql的增删查改等语句这里就不赘述了,我们可以适当往表格里添加一些数据便于后续查询等操作
第三步,编写C程序
建好了表之后,我们试着用c语言连接MYSQL数据库并查询内容(查test中visitor表格所有信息)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<mysql.h>
#pragma warning(disable:4996)
int main() {
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int flag, t;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "我是密码", "test", 0, NULL, 0))
{
printf("Failed to connect to Mysql!\n");
return 0;
}
else
{
printf("Connected to Mysql successfully!\n");
}
/*//插入语句,如果是插入就不需要res后面处理结果的语句
mysql_set_character_set(&mysql, "gbk");//该语句可解决插入语句中文编码问题
char query[] = "insert into visitor(vid,vname) values('20173015011344','张三')";
*/
char query[] = "select * from visitor"; //查询,成功则返回0
flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
if (flag)
{
printf("Query failed!\n");
return 0;
}
else
{
printf("[%s] made...\n", query);
} //mysql_store_result讲全部的查询结果读取到客户端
res = mysql_store_result(&mysql); //mysql_fetch_row检索结果集的下一行
while (row = mysql_fetch_row(res))
{ //mysql_num_fields返回结果集中的字段数目
for (t = 0; t < mysql_num_fields(res); t++)
{
printf("%s\t", row[t]);
}
printf("\n");
}
mysql_close(&mysql);
system("PAUSE");
return 0;
}
遇到的问题
-
编译报错找不到源文件mysql/udf_registration_types.h错误
原因:mysql_com.h文件1034行
由于C/C++里#include方式,编译器在编译时只会去编译器指定的类库目录下寻找header这个头文件,找不到就会报错。
而#include "header"方式,编译器会先去当前项目目录下寻找header头文件,找不到的话再去编译器指定的类库目录下寻找。
‘mysql/udf_registration_types.h’这个头文件是在’/usr/include/mysql/mysql’下,即项目目录下,所以以#include “header” 方式来包含这个头文件就修复了所遇到的BUG。
解决方案:尖括号<>改成双引号””(如图) -
编译报错无法解析的外部符号_mysqlxxxxx
原因:没有加入头文件和库文件
解决方案:项目->属性->C/C+±>常规,右边第一项附加包含目录,加入mysql的include目录
链接器->常规,添加mysql的lib库目录
链接器->输入,添加依赖项中添加libmusql.lib(记住要将这个文件(在mysql的lib目录中添加到工程文件或者C:\Windows\System32中))
-
编译仍然报错无法解析的外部符号 _mysql_real_connect…
原因:vs建立的项目默认为win32项目,但是mysql支持的是64位的
解决方案:项目->属性,平台改为x64。点击配置管理器,活动解决方案平台改为x64
-
运行报错提示缺少“libmysql.dll”
解决方案:安装MySql下的lib文件夹)中的libmysql.dll拷到项目下的Debug文件夹中,而是拷到项目下x64\Debug中(或者C:\Windows\System32中),然后重启
第一次用CSDN写博客,不太会用,中途被卡出去好多次,代码是一段一段粘贴上去的,如果发现了错误请及时指出,感激不尽~~