C语言连MySQL使用教程
系统环境:
Ubuntu8.04
一:安装
从官方网站下载
需要的软件有:
MySQL-server ,MySQL-client,MySQL-bench,MySQL-devel,MySQL-shared
其实上面的几个文件,最需要的是MySQL-server ,MySQL-client,我下载的是
还有mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz
下载地址是:http://dev.mysql.com/downloads/connector/c/6.0.html#Red_Hat_Enterprise_Linux_5_(non_RPM_packages)
实际上就从www.mysql.com 下载就可以了。细心的可能会发现在http://dev.mysql.com/downloads/ 这个页面,还有MySQL Workbench
这个可能就是上面我所说的MySQL-devel文件。
其实要这些文件干什么,就是为了用C语言连接MYSQL 。那么连接MYSQL需要的文件一般都是lib和mysql.h等文件
下面,先安装MYSQL的MySQL-server ,MySQL-client,然后解压mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz 即可,实际上解压完后,我们需要的文件就只有三个文件夹,bin,include,lib 。
二:修改root密码
用set password语句来修改用户的密码,三个步骤 “先mysql -u root登陆数据库系统” 然后“mysql> update mysql.user set password=password('newpwd')” 最后执行“flush privileges”就可以了。
注意:上面的newpwd是你所修改完后的密码。即,修改完密码后,数据库的密码就是newpwd,你可以用其他密码替代。
三:建立数据库
使用c语言操作mysql之前,先在mysql里头创建一个数据库,一个表,在表里头添加数据如下:
创建数据库,库名为cusemysql:
mysql>create database cusemysql;
创建表,表名为:
mysql>use cusemysql;
mysql>create table children(childno int not null unique,fname varchar(20),age int);
添加一点数据哦:
mysql>insert into children values(5,"花儿",10);
四:编写代码
/*insert.c*/
#include <stdio.h>
#include "mysql.h"
#include <stdlib.h>
#include <syslog.h>
// #include "/usr/local/mysql/include/mysql/mysql.h"
int main(int argc,char *argv[])
{
MYSQL my_connection;
int res;
mysql_init(&my_connection);
/* if(mysql_real_connect(&my_connection,"localhost","root","123456","cusemysql",0,NULL,CLIENT_FOUNT_ROWS))
*/
// 上面的这行代码是错的,网上的这行代码是错的
/*if(mysql_real_connect(&my_connection,"localhost","root","123456","cusemysql",0,NULL,0))
*/
/* if(mysql_real_connect(&my_connection,"172.29.141.110","root","123456","cusemysql",0,NULL,0)) */ //套解字的问题
//下面这行意思是连接mysql ,用户:root ,密码:123456,数据库:cusemysql,
//而127.0.0.1的意思是本机回路ip,开始用我的ip172.29.141.110,可是不能连接,
//后来就改成127.0.0.1
//具体为什么连不上是因为MySQL的配置有关,有关配置,请查阅网上资料,
//配置文件一般是/etc/mysql/my.cnf ,可以用locate my.cnf查看具体路径
if(mysql_real_connect(&my_connection,"127.0.0.1","root","123456","cusemysql",0,NULL,0))
{
printf("Connection success/n");
res=mysql_query(&my_connection,"insert into children values(10,'Ann',5)");
if(!res)
{
printf("insert %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 EXIT_SUCCESS;
}
五:编译
gcc insert.c -I/home/cyq/桌面/mysql-connector/include -L/home/cyq/桌面/mysql-connector/lib -lmysqlclient
六:运行
./a.out
七:注意:
1,在上面的各个操作中,一定注意文件的权限问题。比如库文件的调用需要相应的权限。
2,如果提示有文件找不到,需要把相应的文件COPY到相应的目录.
八:参考:
http://blog.csdn.net/chinalinuxzend/archive/2009/06/02/4236354.aspx
声明:本文档可以随意更改,但必须署名原作者
作者:凤凰舞者 qq:578989855