【Linux】Ubuntu下C语言访问MySQL数据库入门
2013-01-15 16:22
375 查看
使用的系统是Ubuntu 11.10.数据库是MySQL。
然后,要使用C语言编程访问数据库,需要另外安装一个开发包:
然后创建一个名为foo的数据库:
在MySQL命令行模式中执行方法如下:
注意的是:需要指定include库和库文件的路径名,以及指定链接的库模块mysqlclient。
如果不在开始的时候安装开发包,就会产生如下错误:
运行结果:
在这里特别需要注意的是:
函数mysql_affected_rows返回的是被一个更新操作修改的行数,而不是满足where子句的行数。
MySQL数据库环境配置
首先需要安装MySQL客户端和服务器,命令行安装方式为:sudo apt-get install mysql-server mysql-client
然后,要使用C语言编程访问数据库,需要另外安装一个开发包:
sudo apt-get install libmysqlclient15-dev
在MySQL中建立相应数据库
首先以用户rick登录MySQL数据库(用户rick已经被root权限用户赋予了创建数据库等等的权限):然后创建一个名为foo的数据库:
CREATE DATABASE foo;然后利用如下SQL语句创建表及插入数据:
CREATE TABLE children( childno int(11) NOT NULL auto_increment, fname varchar(30), age int(11), PRIMARY KEY (childno) ); INSERT INTO children(childno,fname,age) VALUES(1,'Jenny',21); INSERT INTO children(childno,fname,age) VALUES(2,'Andrew',17); INSERT INTO children(childno,fname,age) VALUES(3,'Gavin',8); INSERT INTO children(childno,fname,age) VALUES(4,'Duncan',6); INSERT INTO children(childno,fname,age) VALUES(5,'Emma',4); INSERT INTO children(childno,fname,age) VALUES(6,'Alex',15); INSERT INTO children(childno,fname,age) VALUES(7,'Adrian',9);
在MySQL命令行模式中执行方法如下:
MySQL数据库连接测试
然后采用如下C语言进行数据库连接测试connect1.c:#include <stdlib.h> #include <stdio.h> #include "mysql.h" int main(int argc,char *argv[]) { MYSQL *conn_ptr; conn_ptr = mysql_init(NULL); if(!conn_ptr) { fprintf(stderr,"mysql_init failed\n"); return EXIT_FAILURE; } conn_ptr = mysql_real_connect(conn_ptr,"localhost","rick","rick","foo",0,NULL,0); if(conn_ptr) printf("Connection success\n"); else printf("Connection failed\n"); mysql_close(conn_ptr); return EXIT_SUCCESS; }执行结果:
注意的是:需要指定include库和库文件的路径名,以及指定链接的库模块mysqlclient。
如果不在开始的时候安装开发包,就会产生如下错误:
执行SQL语句进行数据操作
向数据库表children中插入一行:#include <stdlib.h> #include <stdio.h> #include "mysql.h" int main() { MYSQL my_connecyion; int res; mysql_init(&my_connecyion); if(mysql_real_connect(&my_connecyion,"localhost","rick","rick","foo",0,NULL,0)) { printf("Connection success\n"); //执行SQL语句 res = mysql_query(&my_connecyion,"INSERT INTO children(fname,age) VALUES('Ann',3)"); if(!res) printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connecyion)); else fprintf(stderr,"Insert error %d : %s \n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion)); mysql_close(&my_connecyion); } else{ fprintf(stderr,"Connection failed\n"); if(mysql_errno(&my_connecyion)) fprintf(stderr,"Connection error %d : %s\n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion)); } return EXIT_SUCCESS; }
运行结果:
在这里特别需要注意的是:
函数mysql_affected_rows返回的是被一个更新操作修改的行数,而不是满足where子句的行数。
相关文章推荐
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- 【Linux】Ubuntu下C语言访问MySQL数据库入门
- Linux 数据库学习的准备工作---win通过ssh访问ubuntu
- Linux入门(12)——解决双系统下Ubuntu16.04不能访问Windows分区
- Linux for Ubuntu 挂载/访问Windows的共享文件夹
- Linux(ubuntu)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因
- Ubuntu 配置Apache访问linux目录
- 基于linux用C语言编写的局域网通信软件(在ubuntu上正常运行)
- [Putty_Win和Linux访问]配置VirtualBox虚拟机实现Ubuntu与Windows系统间数据交换即Putty的访问
- Ubuntu双网卡构建linux router实现局域网访问公网?
- Linux下PostgresQL数据库C语言接口:libpq (二)数据库访问
- 【Linux学习】CuteFTP访问VM下ubuntu
- ubuntu samba服务器配置(windows访问linux下文件夹,比VMware共享文件夹更高效)
- linux(ubuntu)下C++访问mysql数据库
- ***Linux(Ubuntu、CentOS)下开放 MySQL 服务远程访问
- 在Linux(Ubuntu) 中安装mysql服务器并开启远程访问
- ubuntu14.04中利用samba访问linux/windows共享目录的方法