各种渠道去找有关于使用C语言操作数据库的资料,好辛苦,弄出来了!
数据库部分
首先创建一张表
create table children(childno int not null unique,fname varchar(20),age int);
然后插入一组数据
insert into children values(1,'yuanlief',23);
查询
select *from children;
数据库搞定,接下来是C语言部分。
C语言部分
insert.c 全部源码。
/* insert.c */
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main(int argc, char *argv[])
{
MYSQL my_connection;
int res;
mysql_init(&my_connection);
/*mysql_real_connect(&mysql,主机名,用户名,密码,数据库名,0,NULL,0) == NULL)*/
/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "123456","test",0,NULL,CLIENT_FOUND_ROWS))
{
printf("Connection success\n");
res = mysql_query(&my_connection, "insert into children values(2,'yuanlifu',24)");
if (!res)
{
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
}
else
{
//分别打印出错误代码及详细信息
fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
mysql_close(&my_connection);
}
else
{
fprintf(stderr, "Connection failed\n");
if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
}
return 1;// "EXIT_SUCCES";
}
然后编译
gcc -o insert insert.c
爆出大量未定义标识符的错误!应该是GCC编译器没有找到头文件。
各种纠结,不知怎么办。。。。。。
这里省略三千字纠结!
从一位大神那里找到这个解决办法,编译成功!
gcc -o insert insert.c -lmysqlclient -I/usr/include/mysql -L/usr/lib64/mysql
但是这个也可以编译
gcc -o insert insert.c -lmysqlclient -L/usr/lib64/mysql
这两个后缀缺一不可!
运行:
./insert
查看一下数据库:
select *from children;
插入成功!