原文:C语言对mysql数据库的操作

这已经是一相当老的话题。不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的!

我们言归正传
1.头文件:
       #include <stdio.h>
       #include <stdlib.h>
       #include <mysql/mysql.h> //这个是必需要包含的,下面对mysql的所有操作函数,都出自这里
2.定义一个MYSQL变量:
       MYSQL mysql;
       这里MYSQL是一个用于连接MySql数据库的变量。
       在后面对mysql数据库的操作中,我们就用这个MYSQL变量作为句柄的。
3.定义数据库参数:
       char host[32]=”localhost”;  
       char user[32]=”username”;  
       char passwd[32]=”pwd”; 
       char dbname[32]=”testdb”; 
4.数据库操作
       1).初始化数据库:
        mysql_init(&mysql);
       2).连接数据库:
           mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0);
         我们在操作时,可以对以上的函数进行if测试,如果初始化或者连接出错,作出相应提示,以便调试。
5.对数据库的操作:
         Mysql_query(&mysql, “select * from testdb where condition”);
         我们在实际操作中,为了更方便的使用程序中的某些变量,我们将会用到一个函数:
         int sprintf(char *str, const char *format, …);
         这个函数用来格式化我们的字符串,然后将变量按照给你的格式,赋给第一个参数。
         我们使用这个方法方法可以很方便的使用我们的变量来对数据库进行操作。例如我们将要进行数据库的查询操作,我们就可以这样使用:
         sprintf(sql,”select * from testdb where username = ‘%s’”, u_name);
         然后使用mysql_query(&mysql, sql)进行查询。
        
        
其实大家已经注意到了,在sprintf函数中第二个参数是我们非常熟悉的sql语句,只不过在条件的右端使用了类似输出函数的格式符,因为我们使用了变
量。当然,在没有变量的时候,我们可以省去第三个参数,但是这样,我们使用sprintf的作用也就随之消失了。 
        大家对sql语句的操作一定比我更加熟悉,因此,关于删除和修改的例子我们就不过列举了。
6.关闭数据库连接:        
     Mysql_close(&mysql);        
        
也许大伙都使用过php对mysql进行操作。也许也已经发现,在c语言中,对mysql数据库的操作和php有很大的相似之处。
下面我赋上一段小小的代码,来结束这篇文档!:)希望大家给予指点。
#include <stdio.h>
#include <mysql/mysql.h>
#include <stdlib.h>
#include <errno.h>
#include <syslog.h>
MYSQL mysql;
main(){   
         char host[32]=”localhost”; // mysql host
         char user[32]=”username”;//mysql user name
         char passwd[32]="pwd";        //mysql pwd
         char dbname[32]=”testdb”;//mysql db
         
         
          
       if( mysql_init(&mysql) == NULL )
         {  
                 syslog(LOG_USER|LOG_INFO,”inital mysql handle error\n”);
                  return 1; 
        }
         if (mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)
         {
                   syslog(LOG_USER|LOG_INFO, “Failed to connect to database: Error: %s\n”,mysql_error(&mysql));
                  return 1; 
        }
        else syslog(LOG_USER|LOG_INFO, “connect to database: \n”);
        printf(”connected to the db!\n”); 
        int a = find_ps(); 
        printf(”the num is:%d\n”,a); 
        db_close(); 
        return 0;}int db_close(){
        mysql_close(&mysql);
        return 0;
       }
      int  find_ps (){
         MYSQL_ROW m_row;
         MYSQL_RES *m_res;
         char sql[1024],username[32];
         int res=1;
         int *id; 
         sprintf(sql,”select * from testdb where user_name = ‘%s’”, u_name);
         if(mysql_query(&mysql,sql) != 0)
         {
                   syslog(LOG_USER|LOG_INFO, “select ps_info Error: %s\n”,mysql_error(&mysql));       
                   return res;        
         }        
         m_res = mysql_store_result(&mysql);
         if(m_res==NULL)
         {
                   syslog(LOG_USER|LOG_INFO, “select username Error: %s\n”,mysql_error(&mysql)); 
                   res = 3;
                   return res;
         }
         }
         mysql_free_result(m_res);
         return res;} 
7.编译:
       别忘了加上库位置,否则编译无法通过!
       gcc  -L/usr/lib/mysql –lmysqlclient func.c -o func
     呵呵,别忘记哦!

C语言对mysql数据库的操作的更多相关文章

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

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

  2. C语言连接MySql数据库

    C语言连接MySql数据库(CodeBlocks) 操作系统:Windows7(32位)编译软件:Code::Blocks 10.05数 据 库:mysql-5.1.62-win32 数据库内的数据: ...

  3. 使用c语言实现linux数据库的操作

    前言:上一篇讲解了linux下使用命令行操作数据库,这篇继续讲解怎么使用c语言实现linux数据库的操作. 使用c语言实现环境搭建:既然我们要使用c语言实现linux数据库操作,那么首先我们得先把数据 ...

  4. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_re ...

  5. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  6. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  7. DBA必备:MySQL数据库常用操作和技巧

    DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...

  8. Database学习 - mysql 数据库 表操作

    mysql 数据库 表操作 创建数据表 基本语法格式: 创建数据表: create table 表名( 字段名 datatype 约束, 字段名 datatype 约束, ...... ) 修改表名 ...

  9. c语言连接mysql数据库的实现方法

    C语言连接mysql数据库,需要相应的头文件和lib文件,如果你安装Mysql数据库,会在安装目录下找到这些库文件,如果没有安装,也可以在网上找到 我这里也有一份网上找到的:/201205/other ...

随机推荐

  1. MEF初体验之十一:查询组合容器

    查询组合容器 组合容器暴露了几个get exports的重载方法和导出对象和对象集合.你需要注意下面的行为: 当请求单个对象实例时,如果未发现导出,一个异常将被抛出 当请求单个对象实例时,如果发现超过 ...

  2. 首先看K一个难看的数字

    把仅仅包括质因子2.3和5的数称作丑数(Ugly Number),比如:2,3,4,5,6,8,9,10,12,15,等,习惯上我们把1当做是第一个丑数. 写一个高效算法,返回第n个丑数. impor ...

  3. 使用RESTClient插件数据模拟(GET,POST)提交

    1:在Firefox下载RESTClient插件安装 2:安装界面后, 3:点击设置头文件:(设请求地址有头部文件) 4:设置界面,当然有非常多选择.依据你的须要.一般在输入的时候有智能提示,我这里以 ...

  4. 前端javascript模板

    doT.js——前端javascript模板引擎问题备忘录 我手里维护的一个项目,遇到一个问题:原项目的开发人员在Javascript中,大量的拼接HTML,导致代码极丑,极难维护.他们怎么能够忍受的 ...

  5. android sdk linux 文本 64 位置

    android sdk linux 64 之前获得模.现在补上一,然后,小伙伴们下载 版权声明:本文博主原创文章,博客,未经同意不得转载.

  6. 数字IC设计-15-DPI(延续)

    简介 供SV,无论是构建测试激励,或模拟硬件的并行行为,DPI这是非常方便.上次我们介绍SV内通"import"导入和电话C性能. 在本节,通过一个简单的例子来说明C什么语言的函数 ...

  7. oracle数据库全然恢复和不全然恢复以及运行用户管理辈分恢复

    比較全然恢复和不全然恢复: 一.全然恢复:将数据库恢复到当前最新状态,包含直至请求恢复时进行的全部已提交的数据更改 二.不全然恢复:将数据库恢复到请求恢复操作之前指定的过去时间点 一.全然恢复过程 以 ...

  8. Jquery基础教程第二版学习记录

    本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...

  9. AFNetWorking POST Multi-Part Request 上传图片

    这些天来,做图片上传的时候,我遇到一个问题.对我来说,这只是一个附加的图片将请求超时,这里是代码: AFHTTPRequestOperationManager *manager = [AFHTTPRe ...

  10. thinkphp学习笔记1—目录结构和命名规则

    原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...