关于已装置mysql的,检察mysql装置目次,假如装置目次下没有include和lib目次,
申明没有完全装置,须要下载mysql-connector类库,官方下载地点:http://dev.mysql.com/downloads/connector/c/
引荐课程:C言语教程。
部份截图以下,从图左边可看出,官网供应了c、c++、Python、J等言语的链接库,依据个人状况下载。
下面最先设置vs2008,大抵须要三步。
由于我们要运用Mysql的API,而且我们机子上一定装置了Mysql数据库,所以我们要将工程的头文件途径指向Mysql装置目次的同文件mysql.h地点的位置,将衔接库途径指向libmysql.lib地点的途径,
这两个文件平常在include、lib目次下。
新建一个项目,右键该项目,挑选属性,弹出属性对话框。
第一:将x项目属性页的C/C++->通例->附加包括目次指向mysql.h地点的位置:C:\Program Files\MySQL\MySQL Server 5.1\include
第二:将项目属性页的链接器->通例->附加库目次指向libmysql.lib地点的途径:C:\Program Files\MySQL\MySQL Server 5.1\lib.
第三:将链接器->输入->附加依靠项中增加libmysql.lib。
经由过程上述设置后涌现毛病:
没法剖析的外部标记 _mysql_close@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_free_result@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_num_fields@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_fetch_row@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_store_result@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_error@4,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_real_query@12,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_select_db@8,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_real_connect@32,该标记在函数 _main 中被援用
没法剖析的外部标记 _mysql_init@4,该标记在
经由网友协助,我将本来下载的64位mysql-connector卸载,又从新下了一个32位装置,效果毛病消逝,百思不得其解,多是我的mysql数据库是32位的吧。
末了附上c衔接mysql的示例代码:
// test9.24.cpp : 定义控制台应用程序的进口点。 // //#include <stdio.h> //#include <stdlib.h> //#include <mysql.h> //包括MySQL所须要的头文件 //#include <WinSock2.h> //Socket,衔接MySQL也须要用的 #include <windows.h> #include "stdio.h" #include "winsock.h" #include "mysql.h" MYSQL mysql, *sock; //声明MySQL的句柄 int main(void) { const char * host = "127.0.0.1"; //由于是作为本机测试,所以填写的是当地IP const char * user = "root"; //这里改成你的用户名,即衔接MySQL的用户名 const char * passwd = "123"; //这里改成你的用户暗码 const char * db = "yiersan"; //这里改成你要衔接的数据库的名字 unsigned int port = 3306; //这是MySQL的服务器的端口,假如你没有修悛改的话就是3306。 const char * unix_socket = NULL; //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL unsigned long client_flag = 0; //这个参数平常为0 int t; const char * i_query = "select * from yes_msg"; //查询语句 MYSQL_RES * result; //保留效果集的 www.2cto.com MYSQL_ROW row; //代表的是效果集合的一行 mysql_init(&mysql); //衔接之前必需运用这个函数来初始化 if ( (sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag) ) == NULL ) //衔接MySQL { printf("衔接失利,原因是: \n"); fprintf(stderr, " %s\n", mysql_error(&mysql)); exit(1); } else { fprintf(stderr, "衔接MySQL胜利!!\n"); } if ( mysql_query(&mysql, i_query) != 0 ) //假如衔接胜利,则最先查询 { fprintf(stderr, "查询失利!\n"); exit(1); } else { if ( (result = mysql_store_result(&mysql)) == NULL ) //保留查询的效果 { fprintf(stderr, "保留效果集失利!\n"); exit(1); } else { while ( (row = mysql_fetch_row(result)) != NULL ) //读取效果集合的数据,返回的是下一行。由于保留效果集时,当前的游标在第一行【之前】 { printf("name is %s\t", row[0]); //打印当前行的第一列的数据 printf("age is %s\t\n", row[1]); //打印当前行的第二列的数据 } } } mysql_free_result(result); //开释效果集 mysql_close(sock); scanf("%d",&t);//封闭衔接 system("pause"); exit(EXIT_SUCCESS); }
以上就是c怎样和mysql衔接的细致内容,更多请关注ki4网别的相干文章!