程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Linux下C語言Mysql操作和字符集設置

Linux下C語言Mysql操作和字符集設置

編輯:MySQL綜合教程

Linux下C語言Mysql操作和字符集設置


一、C語言 Mysql操作

首先安轉libmysql庫。
# sudo apt-get install libmysql++-dev 把MySQL的庫拷貝到公共庫中。
# sudo cp -ri /usr/lib/mysql/* /usr/lib/ 配置MySQL庫。
# mysql_config --cflags --libs

二、創建數據庫和表

啟動終端,輸入以下命令,進入mysql。
# mysql -u username -p

創建一個數據庫。
mysql > create database TemWet;
db

創建數據表monitZ喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcixzZW5zZXJzo6yyorLlyOuy4srUyv2+3aGjPC9wPgoKCjxwcmUgY2xhc3M9"brush:sql;">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

編譯成功,執行成功.
suc

四、字符集設置

插入一條帶中文的數據,但是卻出現了中文亂碼的問題。這應該是數據庫的字符編碼問題了。
lm

解決方案:
修改MySQL的配置文件/etc/mysql/my.cnf
fa

保存,並重新啟動mysql服務。
查看數據庫的字符集:mysql> show variables like "character_set_%';
cs

刪除之前的數據庫數據表,重新建立,並插入數據,完美支持中文。
zw

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved