码迷,mamicode.com
首页 > 数据库 > 详细

Linux下 C语言 Mysql操作和字符集设置

时间:2015-04-16 09:06:02      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:c语言mysql   字符集   mysql字符集   libmysql   

一、C语言 Mysql操作

  1. 首先安转libmysql库。
    # sudo apt-get install libmysql++-dev
  2. 把MySQL的库拷贝到公共库中。
    # sudo cp -ri /usr/lib/mysql/* /usr/lib/
  3. 配置MySQL库。
    # mysql_config --cflags --libs

二、创建数据库和表

  1. 启动终端,输入以下命令,进入mysql。
    # mysql -u username -p

  2. 创建一个数据库。
    mysql > create database TemWet;
    技术分享

  3. 创建数据表monitor,sensers,并插入测试数据。

mysql> use TemWet
Database changed
mysql> create table monitor
    -> (
    -> Id int not null,
    -> monitor_name varchar(50),
    -> monitor_com varchar(50),
    -> primary key(Id)
    -> );
Query OK, 0 rows affected (0.10 sec)

三、编写c程序测试

c连接操作数据库代码示例:

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char* server_groups[]={"embedded","server","this_program_server",(char*)NULL};

int main(){

    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;
    char sqlcmd[200];
    int t,r;
    mysql_init(&mysql);//初始化MYSQL标识符,用于连接
    if(!mysql_real_connect(&mysql,"localhost","root","root","sensers",0,NULL,0)){
      fprintf(stderr,"无法连接到数据库,错误原因是:%s/n",mysql_error(&mysql));

    }
    else {
         puts("数据库连接成功");
        //首先向数据库中插入一条记录
        //sprintf(sqlcmd,"%s","insert into friends (name,telephone) Values (‘xx‘,‘xx‘)");
         //mysql_query(&mysql,sqlcmd);
         sprintf(sqlcmd,"%s","set names utf8;");
         t=mysql_real_query(&mysql,sqlcmd,(unsigned int)strlen(sqlcmd));
         sprintf(sqlcmd,"%s","select * from senser;");
         t=mysql_real_query(&mysql,sqlcmd,(unsigned int)strlen(sqlcmd));

         if(t){
             printf("查询数据库失败%s/n",mysql_error(&mysql));
        }
        else {
            res=mysql_store_result(&mysql);//返回查询的全部结果集
            while(row=mysql_fetch_row(res)){//mysql_fetch_row取结果集的下一行
             for(t=0;t<mysql_num_fields(res);t++){//结果集的列的数量
              printf("%s\t",row[t]);
             }
         printf("\n");
         int wet = atoi(row[2]);
         printf("%d\n",wet);
        }

        mysql_free_result(res);//操作完毕,查询结果集
        }
        mysql_close(&mysql);//关闭数据库连接

    }

mysql_library_end();//关闭MySQL库

return EXIT_SUCCESS;
}

编译c文件:
# gcc sqltest.c -o sqltest -lmysqlclient

编译成功,执行成功.
技术分享

四、字符集设置

插入一条带中文的数据,但是却出现了中文乱码的问题。这应该是数据库的字符编码问题了。
技术分享

解决方案:
修改MySQL的配置文件/etc/mysql/my.cnf
技术分享

保存,并重新启动mysql服务。
查看数据库的字符集:mysql> show variables like ‘character_set_%‘;
技术分享

删除之前的数据库数据表,重新建立,并插入数据,完美支持中文。
技术分享

Linux下 C语言 Mysql操作和字符集设置

标签:c语言mysql   字符集   mysql字符集   libmysql   

原文地址:http://blog.csdn.net/jeanphorn/article/details/45070273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!