This article uses the environment: win7 x64, vs2008, mysql as an example to explain how C connects to MySQL
For those who have installed mysql, check the mysql installation directory. If there are no include and lib directories in the installation directory ,
Indicates that it is not completely installed, you need to download the mysql-connector class library, the official download address: http://dev.mysql.com/downloads/connector/c/
Recommended courses: C Language Tutorial.
Some screenshots are as follows. As can be seen from the left side of the picture, the official website provides link libraries for c, c, Python, J and other languages, which can be downloaded according to personal circumstances.
Let’s start configuring vs2008, which roughly requires three steps.
Since we want to use the Mysql API, and the Mysql database must be installed on our machine, we need to point the project's header file path to the location of the same file mysql.h in the Mysql installation directory. Point the connection library path to the path where libmysql.lib is located.
These two files are generally in the include and lib directories.
Create a new project, right-click the project, select Properties, and the properties dialog box will pop up.
First: Point the C/C ->General->Additional Include Directory of the x project property page to the location of mysql.h: C:\Program Files\MySQL\ MySQL Server 5.1\include
Second:Point the linker->General->Additional library directory of the project property page to libmysql.lib Path: C:\Program Files\MySQL\MySQL Server 5.1\lib.
Third:Put linker->Enter- >Add libmysql.lib in Additional Dependencies.
An error occurred after passing the above configuration:
Unresolved external symbol _mysql_close@4, which is referenced in function _main
Unresolved external symbol _mysql_free_result@4, the symbol is referenced in function _main
Unresolved external symbol _mysql_num_fields@4, the symbol is referenced in function _main Referenced in function _main
Unresolved external symbol _mysql_fetch_row@4, this symbol is referenced in function _main
Unresolved external symbol _mysql_store_result @4, the symbol is referenced in the function _main
Unresolved external symbol _mysql_error@4, the symbol is referenced in the function _main
Unable Resolved external symbol _mysql_real_query@12, which is referenced in function _main
Unresolved external symbol _mysql_select_db@8, which is referenced in function _main
Unresolved external symbol _mysql_real_connect@32, the symbol is referenced in function _main
Unresolved external symbol _mysql_init@4, the symbol is referenced in
With the help of netizens, I uninstalled the 64-bit mysql-connector that I originally downloaded, and then downloaded a 32-bit installation again. As a result, the error disappeared. I was puzzled. Maybe my mysql database is 32-bit. Bar.
Finally, attach the sample code for c connection to 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); }
The above is the detailed content of How to connect c with mysql. For more information, please follow other related articles on the PHP Chinese website!