亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linux下c操作mysql.c

?? 在Linux操作系統下的C語言進行MySQL進行增刪改查
?? C
字號:
1,使用c語言操作mysql之前,先在mysql里頭創建一個數據庫,一個表,在表里頭添加數據如下:

創建數據庫,庫名為cusemysql:
mysql>create database cusemysql;
創建表,表名為:
mysql>use cusemysql;
mysql>create table children(childno int not null unique,fname varchar(20),age int);
添加一點數據哦:
mysql>insert into children values(5,"花兒",10);
對拉,為了方便起見,把表的大致樣子給大家看看


childno         fname       age
1                小星      9
2                大量      15



2 ,下面進行具體的操作

插入:insert     

好的,我們現編輯一段c代碼,取名為insert.c 

///////////////////////////////////
/*  insert.c */
#include <stdio.h>
#include <stdlib.h>
#include "/usr/include/mysql/mysql.h"  ##locate mysql.h查找
/*注意哦,上面必須是mysql.h的絕對地址,一般在mysql下的include目錄下,仔細看看你的在哪里?*/

int main(int argc, char *argv[]) 
{
MYSQL my_connection;

int res;

mysql_init(&my_connection); 

/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)) 
{
    printf("Connection success\n");
    res = mysql_query(&my_connection, "insert into children values(10,'Ann',5)");

    if (!res) 
    {
        printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里頭的函數返回受表中影響的行數*/
    } 
    else 
    {
    //分別打印出錯誤代碼及詳細信息
        fprintf(stderr, "Insert error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
    }
    mysql_close(&my_connection);
} 

else 
{
    fprintf(stderr, "Connection failed\n");

    if (mysql_errno(&my_connection)) 
    {
        fprintf(stderr, "Connection error %d: %s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}
/////////////////////////////////////////////
代碼寫完了,要編譯哦
#gcc -o insert insert.c -L /usr/lib/mysql/*.a -lz
 ##locate mysqlclient.a查找
ok,現在我們執行看看
#./insert
Connection Success
Inserted 1 rows

year,果然可以,呵呵
不信到mysql下看看表children中是否多了剛才插入的那一行數據

注:也許你會問上面gcc的命令參數是什么意思阿,其實,我也不太清楚,呵呵
大概是要把mysql下的某個特定庫包含進來,可是我不知道具體是個什么庫,所以用*.a全部包含進來拉
其實只要包含mysqlclient.a就可以,你試試看

更新:update

我們只要把上面的代碼中的

res = mysql_query(&my_connection, "insert into children values(10,'Ann',5)");

換成

res = mysql_query(&my_connection, "update children set age=20 where childno<5 ");

即可
上面語句實現的功能是,把編號小于5的所有孩子的年齡全部改成20歲



檢索:select

看代碼之前,最好是先看藍色字體的部分[介紹了代碼中用到的一些函數的作用]
//////////////////////////////////////////////////
/*  select.c */

#include <stdio.h>
#include <stdlib.h>
#include "/usr/local/mysql/include/mysql/mysql.h"

int main(int argc, char *argv[]) 
{
MYSQL my_connection;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;

int res;

mysql_init(&my_connection); 

/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)) 
{
    printf("Connection success\n");
    res = mysql_query(&my_connection, "select childno,fname,age from  children where age<20");

    if (res) 
    {
        printf("SELECT error:%s\n",mysql_error(&my_connection));
    } 
    else 
    {
       res_ptr=mysql_store_result(&my_connection);
       if(res_ptr)
       {
              printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
              while((sqlrow=mysql_fetch_row(res_ptr)))
              {
                     printf("Fetched data...\n");
              }
              if (mysql_errno(&my_connection))
              {
                     fprintf(stderr,"Retrive error:%s\n",mysql_error(&my_connection));
              }
       }
       mysql_free_result(res_ptr);
       }
    mysql_close(&my_connection);
} 

else 
{
    fprintf(stderr, "Connection failed\n");

    if (mysql_errno(&my_connection)) 
    {
        fprintf(stderr, "Connection error %d: %s\n",
        mysql_errno(&my_connection),
        mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}
//////////////////////////////////////////////////
面語句實現的功能是:檢索出年齡小于20歲的小孩的信息,不過沒有對信息進行任何處理哦
下次我們對數據進行一定的處理

這里介紹上面用到的幾個函數:

可以從SELECT語句(或其他返回數據的語句)中檢索完所有數據,在單一調用中,使用mysql_store_result:

MYSQL_RES *mysql_store_result(MYSQL *connection);

必須在mysql_query檢索數據后才能調用這個函數,以在結果集中存儲該數據。這個函數從服務器中檢索所有數據并立即將它存儲在客戶機中。它返回一個指向以前我們從未遇到過的結構(結果集結構)的指針。如果語句失敗,則返回NULL。

使用等價的PostgreSQL時,應該知道返回NULL意味著已經發生了錯誤,并且這與未檢索到數據的情況不同。即使,返回值不是NULL,也不意味著當前有數據要處理。

如果未返回NULL,則可以調用mysql_num_rows并且檢索實際返回的行數,它當然可能是0。

my_ulonglong mysql_num_rows(MYSQL_RES *result);

它從mysql_store_result取得返回的結果結構,并且在該結果集中返回行數,行數可能為0。如果mysql_store_result成功,則mysql_num_rows也總是成功的。

這 種mysql_store_result和mysql_num_rows的組合是檢索數據的一種簡便并且直接的方法。一旦 mysql_store_result成功返回,則所有查詢數據都已經存儲在客戶機上并且我們知道可以從結果結構中檢索它,而不用擔心會發生數據庫或網絡 錯誤,因為對于程序所有數據都是本地的。還可以立即發現返回的行數,它可以使編碼更簡便。如前所述,它將所有結果立即地發送回客戶機。對于大結果集,它可 能耗費大量的服務器、網絡和客戶機資源。由于這些原因,使用更大的數據集時,最好僅檢索需要的數據。不久,我們將討論如何使用 mysql_use_result函數來完成該操作。

一旦檢索了數據,則可以使用mysql_fetch_row來檢索它,并且使用mysql_data_seek、mysql_row_seek、mysql_row_tell操作結果集。在開始檢索數據階段之前,讓我們先討論一下這些函數。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

這個函數采用從存儲結果中獲取的結果結構,并且從中檢索單一行,在行結構中返回分配給您的數據。當沒有更多數據或者發生錯誤時,返回NULL。稍后,我們將回來處理這一行中的數據。

void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);

這個函數允許您進入結果集,設置將由下一個獲取操作返回的行。offset是行號,它必須在從0到結果集中的行數減 1 的范圍內。傳遞0將導致在下一次調用mysql_fetch_row時返回第一行。

MYSQL_ROW_OFFEST mysql_row_tell(MYSQL_RES *result);

這個函數返回一個偏移值,它表示結果集中的當前位置。它不是行號,不能將它用于mysql_data_seek。但是,可將它用于:

MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset);

它移動結果集中的當前位置,并返回以前的位置。

有時,這一對函數對于在結果集中的已知點之間跳轉很有用。請注意,不要將row tell和row seek使用的偏移值與data_seek使用的行號混淆。這些是不可交換的,結果將是您所希望看到的。

void mysql_free_result(MYSQL_RES *result);

完成結果集時, 必須總是調用這個函數,以允許MySQL庫整理分配給它的對象。
 

檢索并處理[比較全面哦,呵呵]:select     

下面是詳細的代碼:
//////////////////
/*  select1.c */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "/usr/local/mysql/include/mysql/mysql.h"
 
int main(int argc, char *argv[]) 
{
MYSQL my_connection;
MYSQL_RES *res_ptr;   /*指向檢索的結果存放地址的指針*/
MYSQL_ROW sqlrow;     /*返回的記錄信息*/
MYSQL_FIELD *fd;      /*字段結構指針*/
char aszflds[25][25]; /*用來存放各字段名*/
int res;             /*執行查詢操作后的返回標志*/
int i,j,k;

mysql_init(&my_connection); 

/*mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)*/
if (mysql_real_connect(&my_connection, "localhost", "root", "","cusemysql",0,NULL,CLIENT_FOUND_ROWS)) 
{
    printf("Connection success\n");
    res = mysql_query(&my_connection, "select childno,fname,age from children where age<20");

    if (res) 
    {
        printf("SELECT error:%s\n",mysql_error(&my_connection));
    } 
    else 
    {
       res_ptr=mysql_store_result(&my_connection);
       if(res_ptr)
       {
              printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
              /*取得各字段名*/
              for(i=0;fd=mysql_fetch_field(res_ptr);i++)
                     strcpy(aszflds[i],fd->name);
              /*輸出各條記錄*/
              printf("下面是檢索出的各條記錄信息:\n");
              j=mysql_num_fields(res_ptr);
              for(i=0;i<j;i++)
              printf("%s\t",aszflds[i]);
              printf("\n");
              while((sqlrow=mysql_fetch_row(res_ptr)))
              {
                     for(i=0;i<j;i++)
                     printf("%s\t",sqlrow[i]);
                     printf("\n");
              }
              if (mysql_errno(&my_connection))
              {
                     fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
              }
       }
       mysql_free_result(res_ptr);
       }
    mysql_close(&my_connection);
} 

else 
{
    fprintf(stderr, "Connection failed\n");

    if (mysql_errno(&my_connection)) 
    {
        fprintf(stderr, "Connection error %d: %s\n",
        mysql_errno(&my_connection),
        mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}
//////////////////////////////////////
主要要注意的幾個地方是:
1,mysql.h的路徑,必須確定它的絕對路徑哦(這句話是錯誤的,只要在編譯是把對應庫編譯進去即可,具體操作方法請查詢本博客)
2,注意你的數據庫的用戶名和密碼是否正確
3,在編譯的時候必須包含這個庫文件mysqlclient.a[記不太清楚,不過你可以直接包含它所在的目錄下的所有庫,肯定就沒有問題,

 

 
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道综合伊人精品热热| 日韩你懂的电影在线观看| 精品对白一区国产伦| 蜜桃av一区二区| 欧美精品久久久久久久久老牛影院| 日韩免费看的电影| 国产九色sp调教91| 精品91自产拍在线观看一区| 一区二区三区精品视频| 欧美日韩国产a| 天天影视涩香欲综合网| 欧美人与性动xxxx| 日韩精品免费专区| 欧美日本韩国一区二区三区视频| 午夜精品影院在线观看| 欧美在线视频不卡| 一区二区三区免费| 欧美日韩成人在线一区| 日本不卡视频在线| 国产精品日日摸夜夜摸av| 粉嫩高潮美女一区二区三区 | 国产综合色在线视频区| 欧美不卡视频一区| 久久99深爱久久99精品| 日本一区二区视频在线| 99热这里都是精品| 三级成人在线视频| 精品国产自在久精品国产| 国产麻豆9l精品三级站| 亚洲码国产岛国毛片在线| 91国内精品野花午夜精品 | 视频一区中文字幕国产| 日韩一区二区三区免费看| 成人av中文字幕| 亚洲在线视频免费观看| 久久久久久久久久电影| 亚洲国产成人av网| 欧美精品一区二区三区高清aⅴ | 国产精品一二三四区| 日本丰满少妇一区二区三区| 欧美中文字幕不卡| 久久久久久影视| 99久久久免费精品国产一区二区| 国产亚洲欧美一级| 精品一二三四区| 久久久精品2019中文字幕之3| 一区二区三区在线免费观看| 天堂在线一区二区| 亚洲精品日韩一| 国产女人水真多18毛片18精品视频| 蜜桃在线一区二区三区| 色一情一乱一乱一91av| 国产精品一区在线观看乱码 | 中文字幕免费在线观看视频一区| 韩国午夜理伦三级不卡影院| 欧美日韩国产一级片| 日韩精品一二区| 久久久久久9999| 91免费视频网| 麻豆精品视频在线观看视频| 欧美成人精品1314www| 成人综合激情网| 午夜国产精品一区| 中文字幕一区二区三区蜜月| 国产美女精品人人做人人爽| 91一区二区三区在线观看| 亚洲女同一区二区| 欧美一区二区三区男人的天堂| 日韩av一二三| 国产嫩草影院久久久久| 日韩欧美国产不卡| 精品视频1区2区| 国产精品亚洲综合一区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 日韩精品一区二区三区蜜臀| 亚洲在线一区二区三区| 久久女同性恋中文字幕| 欧美精品久久久久久久多人混战| 国产宾馆实践打屁股91| 蜜桃视频在线观看一区二区| 亚洲国产精品激情在线观看| 欧美不卡一二三| 精品日韩在线观看| 精品国内片67194| 91视频在线看| 午夜精品久久久久久久99水蜜桃| 久久亚洲精品小早川怜子| 制服.丝袜.亚洲.中文.综合| 色哟哟国产精品免费观看| www.欧美亚洲| 色噜噜狠狠色综合欧洲selulu| 成人精品亚洲人成在线| 成人自拍视频在线| 欧美在线视频不卡| 国产精品成人一区二区三区夜夜夜| 欧美高清激情brazzers| 国产91对白在线观看九色| 99国产精品久久| 欧美一区二区啪啪| 久久久亚洲高清| 精品一区二区久久久| 日本在线播放一区二区三区| 国产在线不卡一区| 欧美综合一区二区| 欧美国产日本视频| 久久电影网电视剧免费观看| 日韩精品一二三四| 91亚洲资源网| 国产精品天天看| 国产精品一区久久久久| 欧美肥妇free| 亚洲成a天堂v人片| 国产福利一区二区三区视频 | 国产精选一区二区三区| 韩国理伦片一区二区三区在线播放| 国产精品一区二区在线看| 欧美日韩国产区一| 亚洲四区在线观看| 免费在线视频一区| 欧美视频自拍偷拍| 欧美激情在线看| 91色综合久久久久婷婷| 136国产福利精品导航| 亚洲电影中文字幕在线观看| 视频一区视频二区中文字幕| 在线观看91av| 日韩成人免费电影| 国产夫妻精品视频| 91麻豆精品国产91久久久资源速度| 国产欧美日本一区视频| 韩日av一区二区| 欧美变态口味重另类| 看电视剧不卡顿的网站| 欧美欧美午夜aⅴ在线观看| 亚洲综合一区二区| 欧美日韩黄视频| 亚洲午夜电影网| 91麻豆精品91久久久久久清纯 | 国产精品一级片在线观看| 亚洲色图一区二区三区| 色综合久久久久综合体桃花网| 亚洲综合偷拍欧美一区色| 欧美日韩高清一区| 成人免费毛片高清视频| 久久影院视频免费| 91丨porny丨国产| 亚洲精品视频自拍| 欧洲av一区二区嗯嗯嗯啊| 久久久久久久久久久久久夜| 国产精品一级黄| 亚洲国产精品一区二区尤物区| 91福利社在线观看| 麻豆成人av在线| 国产精品久久久久7777按摩| 91丨九色丨尤物| 国内外成人在线| 亚洲国产精品久久久久秋霞影院| 日韩欧美中文字幕一区| 一本色道a无线码一区v| 日韩国产精品久久久| 亚洲高清免费观看| 亚洲最大成人综合| 亚洲综合在线免费观看| 亚洲美女精品一区| 亚洲国产精品久久艾草纯爱| 国产精品色在线观看| 亚洲欧美另类小说| 亚洲精品成人在线| 亚洲精品国产第一综合99久久| 最新日韩av在线| 一区2区3区在线看| 九九精品视频在线看| 亚洲日本青草视频在线怡红院| 国产精品午夜免费| 国产欧美一区二区在线观看| 亚洲精品国产无天堂网2021| 亚洲福利一区二区三区| 久久精品国产久精国产| 成人午夜视频福利| 97久久久精品综合88久久| 欧美在线三级电影| 日韩欧美国产小视频| 久久久久亚洲蜜桃| 亚洲福利一二三区| 韩国精品一区二区| 在线一区二区三区做爰视频网站| 日韩天堂在线观看| 国产精品成人一区二区艾草| 欧美久久免费观看| 久久久三级国产网站| 亚洲精品国产视频| jvid福利写真一区二区三区| 日韩精品专区在线影院观看| 亚洲精品国久久99热| 亚洲免费av高清| 午夜国产精品一区| 欧美性一区二区| 亚洲综合色网站| 欧美又粗又大又爽| 亚洲精品日产精品乱码不卡|