C語言連接Mysql

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章