linux c 数据库开发,Linux系统下C开发MySQL数据库应用

Using Ubuntu (8)

Linux系统下C开发MySQL数据库应用

作者:Cassati (cassati@163.com)

时间:2010-05-29

一、开发环境的准备

1、首先要安装好Linux,这里用的是Ubuntu 8.04

2、安装MySQL系列软件包,这边8.04系统仓库里面的是MySQL5.0版本:

sudo apt-get install mysql-server

sudo apt-get install mysql-client

sudo apt-get install

libmysqlclient15-dev

二、检查MySQL服务的状态

1、查看当前的mysql服务状态

sudo /etc/init.d/mysql status

2、也可以用以下检查mysql服务是否有启动,如果结果为空,则没有启动:

sudo netstat -tap | grep mysql 或

ps -ef | grep mysql

三、启动/停止/重启MySQL服务

1、启动:sudo /etc/init.d/mysql start

2、停止:sudo /etc/init.d/mysql stop

3、重启:sudo /etc/init.d/mysql restart

四、在命令行使用MySQL客户端访问数据库

1、访问本地主机:

mysql -uuser -ppassword db_name

2、访问远程主机:

mysql -hhost

-uuser -ppassword db_name

备注:由于默认的配置是只能从本机访问,只要注释掉/etc/mysql/my.cnf里面的bind-address这行,就可以让远程主机访问了。

3、执行管理操作:

使用mysqladmin及相关参数

4、备份 db_name 数据库:

mysqldump -uroot -p

--default-character-set=utf8 --opt ??? --extended-insert=false

--triggers -R --hex-blob -x db_name > bak.

5、恢复db_name数据库:

mysql -uroot -p db_name <

bak.sql

6、备份tbl_name 数据表:

select * into outfile

'/usr/local/mysql/f.txt' fields terminated by '|' from

tbl_name;

7、把文件/home/a.txt导入数据库中的

tbl_name表

mysql> load data local infile

'/home/a.txt'? into table tbl_name fields terminated by ',' lines

terminated by '\r\n';

8、设置mysql数据库root的初始密码

shell> mysql -u root

mysql> SET PASSWORD FOR

''@'localhost' = PASSWORD('newpwd');

mysql> SET PASSWORD FOR

''@'host_name' = PASSWORD('newpwd');

9、为普通用户修改密码:

mysql> SET PASSWORD FOR

'user_name'@'host_name' = PASSWORD('newpwd');

10、建立超级用户账户,具有完全的权限可以做任何事情:

mysql> GRANT ALL PRIVILEGES ON *.*

TO 'monty'@'localhost'

->???? IDENTIFIED BY 'some_pass'

WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.*

TO 'monty'@'%'

->???? IDENTIFIED BY 'some_pass'

WITH GRANT OPTION;

备注:第一句建立用于本机连接的帐户,第二句建立用于从其他主机连接的帐户。

11、建立帐户custom,可以访问bankaccount数据库,但只能从本机访问

mysql> GRANT

SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

->???? ON bankaccount.*

->???? TO 'custom'@'localhost'

->???? IDENTIFIED BY 'obscure';

五、Linux下C开发MySQL数据库应用程序的简要流程

编译:gcc -o bin_name hello.c -I

/usr/include/mysql -L /usr/lib/mysql -lmysqlclient

-lz -lm

1、定义MYSQL变量

MYSQL mysql;

2、初始化MYSQL变量

mysql_init(&mysql);

3、连接到MySQL数据库

mysql_real_connect(&mysql,”hostname”,”username”,”password”,”database”,0,NULL,0);

4、指定本连接的字符集(可选,主要为了确认客户端与服务器之间使用一致的字符集进行通信)

mysql_query( &mysql , "SET NAMES

'utf8'");

5、执行SQL语句

mysql_real_query( &mysql,

SQL, SQL_LEN ) ;

6、获取查询结果

MYSQL_RES *result;

result = mysql_store_result( &mysql

) ;

row_count = ( int )mysql_num_rows(

result ) ;

field_count = ( int )mysql_num_fields(

result ) ;

7、循环调用mysql_fetch_row ,以便获取查询结果的每一行

MYSQL_ROW row;

row = mysql_fetch_row( result )

;//下一次再调用便自动指向result的下一行

printf(“%s\n”,row[index]);//注意转换各个字段的类型

8、释放资源

mysql_free_result( result ) ;

9、关闭MYSQL连接

mysql_close(&mysql);

六、一个简单的例子

//打印出本地主机的pim数据库里面的classmate数据表的第一、第二列。用户名kitty,密码a1。

//编译:gcc -o bin_name hello.c -I

/usr/include/mysql -L /usr/lib/mysql -lmysqlclient -lz -lm

#include

#include

#include

#include

int main( int argc , char* argv[] )

{

MYSQL mysql;

//连接mysql

if(connect_mysql(&mysql))

{

return 1;

}

//载入数据

if( load_classmate(&mysql) )

{

mysql_clo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值