C语言对mysql数据库的操作

原文: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

     呵呵,别忘记哦!

时间: 2024-11-03 10:56:13

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

y 中文乱码-PHP环语言对MySQL数据库进行中文字段的数据插入和查询时候遇到的乱码问题

问题描述 PHP环语言对MySQL数据库进行中文字段的数据插入和查询时候遇到的乱码问题 #定义插入数据库的时候定义插入的字符串的编码为 mysql_query('SET NAMES UTF8'); 这时候通过PhpMyadmin能够正常看到插入的正文字段信息,但是通过 mysql_query("select * from $table_name limit $offset,$rows"); 查询该字段的时候,显示的字段信息是乱码 如果不对插入数据库的编码做任何的定义,直接插入数据库中文

mysql-QT连MySQL数据库插入操作问题

问题描述 QT连MySQL数据库插入操作问题 版本:QT5.2.1 MySQL5.0代码如下: 代码一:query.exec(""insert into text1(idnamesex) values(1'1''1')""); 给数据库中text1表中插入数据,成功! 代码二:query.prepare(""insert into text1(idnamesex)""""values(:id:name:se

mysql数据库表操作,求解答

问题描述 mysql数据库表操作,求解答 现在有一张emp表,表中有8个字段,emp表中有数据,怎样再增加一个字段,设置成主键,自增 解决方案 alter table emp add id int auto_increment,add primary key(id) 解决方案二: ALTER TABLE emp ADD PRIMARY KEY id AUTO_INCREMENT

MySQL数据库常用操作和技巧(DBA必备知识)_Mysql

MySQL数据库可以说是DBA们最常见和常用的数据库之一,MySQL的广泛应用,也使更多的人加入到学习它的行列之中.下面是老MySQL DBA总结的MySQL数据库最常见和最常使用的一些经验和技巧,分享给大家! 一.MySQL数据库的备份 使用MySQL数据库,最常用也是最重要的就是数据库备份了,所以我们先介绍数据库备份.进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有好(这个方法没有得到官方正式文

MySQL数据库误操作后快速回滚的方法_Mysql

基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,MySQL误操作后如何快速回滚?比如,delete一张表,忘加限制条件,整张表没了.假如这还是线上环境核心业务数据,那这事就闹大了.误操作后,能快速回滚数据是非常重要的. binlog2sql快速回滚 首先,确认你的MySQL server开启了binlog,设置了以下参数: [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_siz

PDO对mysql数据库相关操作

PDO是一个"数据库访问抽象层",作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效. 目前而言,实现"数据库抽象层"任重而道远,使用PDO这样的"数据库访问抽象层"是一个不错的选择. 一.PDO基本函数库 PDO->beginTransaction() 标明回滚起始点 PDO->commit 标明回滚结束点,并执行SQL PDO->

jsp如何链接mysql数据库的操作

  1:在数据服务端安装好mysql数据库,这个是必须的,在自己的ssh或者虚拟机上,数据mysql可以看到相关的提示,说明安装成功: 2:我是用的是tomcat服务器,在这里需要安装好java连接mysql的数据库操作库.我是用的jar包是:mysql-connector-java-3.1.14.tar.gz, 大家可以在网上下载,或者,在官网上下载: 3:把解包后的jar放到tomcat里面的lib文件夹下: 4:在程序的代码段里添加连接函数库和库函数,就可以连接到mysql数据库了: 5:

MySQL数据库常用操作

服务器操作(cmd) 开启服务器(必须保证mysql为windows服务):net start mysql56(此处与系统进程中名字相同) 查看进程表中是否存在:mysqld.exe进程(存在) 关闭服务器(必须保证mysql为windows服务):net stop mysql56 查看进程表中是否存在:mysqld.exe进程(不存在) 客户登操作 cmd 1. 登录服务器:mysql -uroot -p123 -hlocalhost//-hlocalhost可省略,他是默认的 -u:后面跟随

MySQL 数据库简单操作

    对于想要从事或爱好mysql相关工作的童鞋们,有必要掌握在命令行下对mysql实现一些简单的操作.本文从描述了如何登录到mysql数据库服务器,如何在mysql提示符下发布命令,创建数据库,以及执行一些简单的DML操作.   1.连接到与退出mysql 为了连接mysql数据库服务器,当调用mysql时,通常需要提供一个MySQL用户名并且很可能需要一个密码.如果服务器 运行在登录服务器之外的其它机器上,还需要指定主机名.联系管理员以找出进行连接所使用的参数 (即,连接的主机 .用户名和