1. 程式人生 > >Linux 下c語言連線與操作MYSQL

Linux 下c語言連線與操作MYSQL

1.安裝mysql

2.安裝mysql.h函式庫

sudo apt-get install libmysqlclient-dev

3. mysql_real_connect()

連線一個mysql伺服器

 語法如下

MYSQL *mysql_real_connect (MYSQL *mysql, 
const char *host, //主機名
const char *user, //使用者名稱
const char *passwd, //密碼
const char *db, //資料庫名字
unsigned int port, //預設0
const char *unix_socket, //預設NULL
unsigned long client_flag)//預設0

4.具體程式碼如下

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<mysql/mysql.h>
 
int main(void)
{
  char *sql;
  sql="SELECT * FROM user_message;";
  int res;//執行sql語句後的返回標誌
  MYSQL_RES *res_ptr;//指向查詢結果的指標
  MYSQL_FIELD *field;//欄位結構指標
  MYSQL_ROW result_row;//按行返回查詢資訊
  int row,column;//查詢返回的行數和列數
  MYSQL *conn;//一個數據庫連結指標
  int i,j;
 
  //初始化連線控制代碼
  conn = mysql_init(NULL);
 
  if(conn == NULL) { //如果返回NULL說明初始化失敗
    printf("mysql_init failed!\n");
    return EXIT_FAILURE;
  }
 
  //進行實際連線
  //引數 conn連線控制代碼,host mysql所在的主機或地址,user使用者名稱,passwd密碼,database_name資料庫名,後面的都是預設
  conn = mysql_real_connect(conn,"localhost","lyt","","chat_room",0,NULL,0);
  if (conn) {
    printf("Connection success!\n");
  } else {
    printf("Connection failed!\n");
  }
  mysql_query(conn,"set names gbk");//防止亂碼。設定和資料庫的編碼一致就不會亂碼
 
  res = mysql_query(conn,sql);//正確返回0 sql 裡面sql語句
  if(res) {
    perror("my_query");
    mysql_close(conn);
    exit(0);
  } else{
    //把查詢結果給res_ptr
    res_ptr = mysql_store_result(conn);
    //如果結果不為空,則輸出
    if(res_ptr) {
      column = mysql_num_fields(res_ptr);
      row = mysql_num_rows(res_ptr);
      printf("查到%d行\n",row);
      //輸出結果的欄位名
      for(i = 0;field = mysql_fetch_field(res_ptr);i++) {
        printf("%10s",field->name);
      }
      puts("");
      //按行輸出結果
      for(i = 1;i < row+1;i++){
        result_row = mysql_fetch_row(res_ptr);
        for(j = 0;j< column;j++) {
          printf("%10s",result_row[j]);
        }
        puts("");
      }
    }
  }
  //退出前關閉連線
  mysql_close(conn);
 
  return 0;
}

5.編譯

gcc -o mysql mysql.c -l mysqllclient