使用的系统是Ubuntu 11.10.数据库是MySQL。

MySQL数据库环境配置

首先需要安装MySQL客户端和服务器,命令行安装方式为:

  1. sudo apt-get install mysql-server mysql-client

然后,要使用C语言编程访问数据库,需要另外安装一个开发包:

  1. sudo apt-get install libmysqlclient15-dev

在MySQL中建立相应数据库

首先以用户rick登录MySQL数据库(用户rick已经被root权限用户赋予了创建数据库等等的权限):

然后创建一个名为foo的数据库:

  1. CREATE DATABASE foo;

然后利用如下SQL语句创建表及插入数据:

  1. CREATE TABLE children(
  2. childno int(11) NOT NULL auto_increment,
  3. fname varchar(30),
  4. age int(11),
  5. PRIMARY KEY (childno)
  6. );
  7. INSERT INTO children(childno,fname,age) VALUES(1,'Jenny',21);
  8. INSERT INTO children(childno,fname,age) VALUES(2,'Andrew',17);
  9. INSERT INTO children(childno,fname,age) VALUES(3,'Gavin',8);
  10. INSERT INTO children(childno,fname,age) VALUES(4,'Duncan',6);
  11. INSERT INTO children(childno,fname,age) VALUES(5,'Emma',4);
  12. INSERT INTO children(childno,fname,age) VALUES(6,'Alex',15);
  13. INSERT INTO children(childno,fname,age) VALUES(7,'Adrian',9);

在MySQL命令行模式中执行方法如下:

MySQL数据库连接测试

然后采用如下C语言进行数据库连接测试connect1.c:

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "mysql.h"
  4. int main(int argc,char *argv[])
  5. {
  6. MYSQL *conn_ptr;
  7. conn_ptr = mysql_init(NULL);
  8. if(!conn_ptr)
  9. {
  10. fprintf(stderr,"mysql_init failed\n");
  11. return EXIT_FAILURE;
  12. }
  13. conn_ptr = mysql_real_connect(conn_ptr,"localhost","rick","rick","foo",0,NULL,0);
  14. if(conn_ptr)
  15. printf("Connection success\n");
  16. else
  17. printf("Connection failed\n");
  18. mysql_close(conn_ptr);
  19. return EXIT_SUCCESS;
  20. }

执行结果:

注意的是:需要指定include库和库文件的路径名,以及指定链接的库模块mysqlclient。

如果不在开始的时候安装开发包,就会产生如下错误:

执行SQL语句进行数据操作

向数据库表children中插入一行:

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "mysql.h"
  4. int main()
  5. {
  6. MYSQL my_connecyion;
  7. int res;
  8. mysql_init(&my_connecyion);
  9. if(mysql_real_connect(&my_connecyion,"localhost","rick","rick","foo",0,NULL,0))
  10. {
  11. printf("Connection success\n");
  12. //执行SQL语句
  13. res = mysql_query(&my_connecyion,"INSERT INTO children(fname,age) VALUES('Ann',3)");
  14. if(!res)
  15. printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connecyion));
  16. else
  17. fprintf(stderr,"Insert error %d : %s \n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));
  18. mysql_close(&my_connecyion);
  19. }
  20. else{
  21. fprintf(stderr,"Connection failed\n");
  22. if(mysql_errno(&my_connecyion))
  23. fprintf(stderr,"Connection error %d : %s\n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));
  24. }
  25. return EXIT_SUCCESS;
  26. }

运行结果:

在这里特别需要注意的是:

函数mysql_affected_rows返回的是被一个更新操作修改的行数,而不是满足where子句的行数。

【Linux】Ubuntu下C语言访问MySQL数据库入门的更多相关文章

  1. Linux CentOS下安装、配置mysql数据库

    假设要在Linux上做j2ee开发.首先得搭建好j2ee的开发环境.包含了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有具体解说了Linux学习之CentOS(七)--Cen ...

  2. Linux下C语言操作MySQL数据库

    MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. Ubuntu下安装 […]

  3. Windows7-32位系统下R语言链接mySQL数据库步骤

    安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...

  4. Linux系统下实现远程连接MySQL数据库的方法教程

    1.在服务器端开启远程访问首先进入mysql数据库,然后输入下面两个命令: grant all privileges on *.* to 'root'@'%' identified by 'passw ...

  5. C语言访问mysql数据库

    mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...

  6. Linux centos 7/ubantu下: 用 C 语言连接 MySQL数据库

    前言:最近用IPC.socket做ATM.聊天项目,考虑到需要用到数据库,所以总结一下centos.ubantu环境下怎么用C语言操作数据库,例如常见的增删改查等! 一.Centos环境安装mysql ...

  7. Linux下eclipse及mysql安装,c++访问mysql数据库

    这两天在学习linux下用c++访问mysql,碰到一堆问题,记录一下. 1.mysql安装: 公司的电脑是64位的,安装的是64为的RHEL4,安装如下三个包: MySQL-client-5.1.4 ...

  8. Linux下C++访问MySQL数据库

    由于想要开始了解并学习用LAMP进行web开发,所以昨晚我在Fedora上安装了MySQL,学习了MySQL的几个常用命令.想着在学习进行web开发(PHP访问数据库)之前,先用我熟悉的C++连接数据 ...

  9. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

随机推荐

  1. HDU 4950 Monster(公式)

    HDU 4950 Monster 题目链接 题意:给定怪兽血量h,你攻击力a.怪物回血力b,你攻击k次要歇息一次,问是否能杀死怪兽 思路:签到题,注意最后一下假设打死了怪,那么怪就不会回血了 思路: ...

  2. 05-图1. List Components (25)

    05-图1. List Components (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue For a ...

  3. php(cli模式)执行文件传递参数

    php -f index.php hello test 2314 shell命令执行php文件不像http那样通过GET方式传参 同样php文件获取的时候也不能用$_GET方法了 而是通过$argv[ ...

  4. java多线程之 ---- 线程死锁

    java多线程之线程死锁 产生死锁的主要原因: 由于系统资源不足. 进程执行推进的顺序不合适. 资源分配不当等. 假设系统资源充足.进程的资源请求都可以得到满足,死锁出现的可能性就非常低.否则就会因争 ...

  5. 安装Node.js 以及命令行使用

    安装 官方的安装包 安装完成之后,会自动添加到环境变量中 通过visual studio安装 命令行 查看版本 PS C:\Users\clu\Desktop> node --version v ...

  6. 【Poj3126】【BNUOJ3245】Prime Path

    http://poj.org/problem?id=3126 https://www.bnuoj.com/v3/problem_show.php?pid=3245 题目鬼图 刚开始看到题目的图觉得这题 ...

  7. C# 函数的传值与传址(转)

    http://www.cnblogs.com/mdnx/archive/2012/09/04/2671060.html using System; using System.Collections.G ...

  8. Python: PS 滤镜--万花筒效果

    本文用 Python 实现 PS 的一种滤镜效果,称为万花筒.也是对图像做各种扭曲变换,最后图像呈现的效果就像从万花筒中看到的一样: 图像的效果可以参考之前的博客: http://blog.csdn. ...

  9. 【废弃】【WIP】JavaScript Object

    创建: 2017/11/03 废弃: 2019/02/19 重构此篇.原文归入废弃  增加[废弃中]标签与总体任务 结束: 2019/03/03 完成废弃, 删除[废弃中]标签, 添加[废弃]标签 T ...

  10. 栗染-Not enough physical memory is available to power on this virtual machine with its configured settings.

    这是在打开虚拟机的时候报的错 解决办法:打开虚拟机的时候选择以管理员身份运行()目测可以 原文参考来自:http://blog.csdn.net/qq_35757415/article/details ...