c語言編程實現mysql客戶端(mysql c語言開發)

本文目錄一覽:

c語言怎麼連接mysql數據庫 代碼

//vc工具中添加E:\WAMP\BIN\MYSQL\MYSQL5.5.8\LIB 路徑

//在工程設置-》鏈接》庫模塊中添加 libmysql.lib

#include stdio.h

#include time.h

#include string.h

#include winsock.h

#include “E:\wamp\bin\mysql\mysql5.5.8\include\mysql.h”

void main(){

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

char *server =”localhost”;

char *user =”root”;

char *password=””;

char *database=”test”;

char sql[1024]=”select * from chinaren”;

conn=mysql_init(NULL);

if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0)){

fprintf(stderr,”%s\n”,mysql_error(conn));

exit(1);

}

if(mysql_query(conn,sql)){

fprintf(stderr,”%s\n”,mysql_error(conn));

exit(1);

}

res=mysql_use_result(conn);

while((row = mysql_fetch_row(res))!=NULL){

printf(“%s\n”,row[2]);

}

mysql_free_result(res);

mysql_close(conn);

}

===============================

#if defined(_WIN32) || defined(_WIN64) //為了支持windows平台上的編譯

#include windows.h

#endif

#include stdio.h

#include stdlib.h

#include “mysql.h”

//定義數據庫操作的宏,也可以不定義留着後面直接寫進代碼

#define SELECT_QUERY “show tables;”

int main(int argc, char **argv) //char **argv 相當於 char *argv[]

{

MYSQL mysql,*handle; //定義數據庫連接的句柄,它被用於幾乎所有的MySQL函數

MYSQL_RES *result; //查詢結果集,結構類型

MYSQL_FIELD *field ; //包含字段信息的結構

MYSQL_ROW row ; //存放一行查詢結果的字符串數組

char querysql[160]; //存放查詢sql語句字符串

//初始化

mysql_init(mysql);

//連接數據庫

if (!(handle = mysql_real_connect(mysql,”localhost”,”user”,”pwd”,”dbname”,0,NULL,0))) {

fprintf(stderr,”Couldn’t connect to engine!\n%s\n\n”,mysql_error(mysql));

}

sprintf(querysql,SELECT_QUERY,atoi(argv[1]));

//查詢數據庫

if(mysql_query(handle,querysql)) {

fprintf(stderr,”Query failed (%s)\n”,mysql_error(handle));

}

//存儲結果集

if (!(result=mysql_store_result(handle))) {

fprintf(stderr,”Couldn’t get result from %s\n”, mysql_error(handle));

}

printf(“number of fields returned: %d\n”,mysql_num_fields(result));

//讀取結果集的內容

while (row = mysql_fetch_row(result)) {

printf(“table: %s\n”,(((row[0]==NULL)(!strlen(row[0]))) ? “NULL” : row[0]) ) ;

}

//釋放結果集

mysql_free_result(result);

//關閉數據庫連接

mysql_close(handle);

system(“PAUSE”);

//為了兼容大部分的編譯器加入此行

return 0;

}

linux下c語言連接Mysql

老大,原來你連 C 的原理都不會啊?

C 語言所有調用函數,都要有聲明,這種外部函數庫的調用,都要用他們的 header 文件來聲明函數變量等等的東西,編譯器會根據實際情況去把這些程序裏面的函數調用鏈接到函數庫的正確位置上。

微軟的產品因為他壟斷了他自己系統的所有功能設計。所以他的系統+他的開發程序+他的開發函數庫就不需要 header 文件了,因為它可以設計為 dll 本身含有足夠的信息去干別的事情了。所以,你別以為你用了微軟的 .net ,他就還是 C 語言了。他已經脫離了 C 語言的範圍了。

GCC一般情況下是編譯器,但編譯器是不夠的,還需要連接器的工作才行。binutils 裏面的軟件提供相關的功能。

要知道以前鏈接到函數庫功能,光有 header 和函數庫文件本體還是不行的,還需要另外的函數庫信息文件來幫助編譯器連接器來找到正確的函數入口位置才行的。

你編程 C ,你要選擇你所使用的功能調用方法,GCC 一般調用 mysql 有調用外部 dll ,或者程序自己直接鏈接 mysql 端口,自己分析 mysql 服務進程發送的各種信息!

前一種辦法,可以直接選擇 mysql 客戶端裏面的 SDK 來直接獲得官方的功能支持,但官方 MySQL 是 GPL 協議發佈的,你使用他的功能接口後,你的程序也必須以 GPL 發佈,不然你就要去選擇其他的函數庫,比如 ODBC 的 mysql 庫。當然還有第三方的 mysql 功能庫可以選擇。

不過你要注意,LGPL 必須嚴格區分你的程序和 LGPL 代碼。你必須動態鏈接到 LGPL 函數庫。如果你的程序包含 LGPL 函數庫一起發佈,且 LGPL 庫是你的軟件的必備函數庫,那麼你的程序也必須開源,但不是 GPL 而是 LGPL !

不然你就選擇自己寫程序直接與 mysql 服務器進行數據傳輸,不使用第三方功能庫。

但我不認為身為一個 Linux 下程序開發人員,會去傻傻的自己寫功能函數而不是用現成的函數庫。

你所遇到的「非要客戶安裝 mysql client 」,就是因為你的軟件調用了一些非你自己編寫的函數調用功能,而為了獲取這些函數而需要安裝幾個 mysql 函數庫的問題。

這個問題我想不應該是一個開發人員提出來的吧?

————————————

樓主你還是重新學習 C 語言吧。.net 的 C 被微軟改的不是真正的 C 語言了,所以你沒辦法按照 C 的標準去比較 .net 和 GCC 的。

而且很多 .net 的編程習慣也沒辦法延續到 GCC 的。

用C語言如何對MySQL數據庫進行操作

有時為了性能,我們會直接用C語言來開發相關的模塊,尤其在我們的web應用中,雖然PHP、JSP等腳本均提供了MySQL的接口,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發的多個項目中就使用了C語言編寫的這類接口,然後再編譯到php裏面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL數據庫,並且讀取裏面的數據返回,同時如何進行編譯。if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯#includewindows.h#endif#includestdio.h#includestdlib.h#includemysql.h我的機器上該文件在/usr/local/include/mysql下定義MySQL數據庫操作的宏,也可以不定義留着後面直接寫進代碼defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相當於char*argv[]{MYSQL mysql,*sock;定義數據庫連接的句柄,它被用於幾乎所有的MySQL函數MYSQL_RES *res;查詢結果集,結構類型MYSQL_FIELD *fd ;包含字段信息的結構MYSQL_ROW row ;存放一行查詢結果的字符串數組char qbuf[160];存放查詢sql語句字符串if(argc!=2){//檢查輸入參數fprintf(stderr,usage:mysql_selectuserid\n\n);exit(1);}mysql_init(mysql);if(!(sock=mysql_real_connect(mysql,localhost,dbuser,dbpwd,9tmd_bbs_utf8,0,NULL,0))){fprintf(stderr,Couldn’tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));if(mysql_query(sock,qbuf)){fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn’tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d’susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0]));puts(queryok!\n);}mysql_free_result(res);mysql_close(sock);exit(0);return0;為了兼容大部分的編譯器加入此行}編譯的時候,使用下面的命令gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令./mysql_select 1將返回如下結果:numberoffieldsreturned:1Theruserid#1’susernameis:Michaelqueryok!上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔源碼天空,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。

求c語言操作mysql數據庫實例

不知你用的是什麼代碼,不過據我實驗,以下代碼是可用的 【來自 】

#include stdlib.h  

#include stdio.h  

#include “mysql.h”  

  

int main (int argc, char *argv[])  

{  

        MYSQL *conn_ptr;  

        conn_ptr=mysql_init(NULL); //連接初始化  

        if(!conn_ptr){  

                fprintf(stderr, “mysql_init failed\n”);  

                return EXIT_FAILURE;  

        }  

  

        conn_ptr = mysql_real_connect(conn_ptr, “localhost”, “moldao”,”newpassword”,”moldao_test”, 0, NULL, 0); //建立實際連接  

        //參數分別為:初始化的連接句柄指針,主機名(或者IP),用戶名,密碼,數據庫名,0,NULL,0)後面三個參數在默認安裝mysql的情況下不用改  

        if(conn_ptr){  

                printf(“Connection success\n”);  

                }  

        else {  

                printf(“Connection failed\n”);  

        }  

  

        mysql_close(conn_ptr); //關閉連接  

        return EXIT_SUCCESS;  

}

連接mysql數據庫需要以下步驟:

安裝mysql開發包, linux下是mysql安裝的時候全選就行了, linux 下直接安裝mysql-devel

新建工程,占貼代碼,注意修改實際的用戶名、密碼 …

設置包含目錄, 在windows下, 找到你的mysql安裝位置,找到include文件夾, 設置ide增加該文件夾到包含目錄 【可能是 C:\Program Files\MySQL\MySQL Server 5.0\include】

設置連接目錄, 同設置包含目錄一樣 找到mysql的lib目錄,設置ide 【可能是 C:\Program Files\MySQL\MySQL Server 5.0\lib\opt 】

設置連接選項, 需要設置ide連接選項,增加 -lmysql

編譯連接運行

如何用C語言連接MYSQL數據庫

1、配置ODBC數據源。

2、使用SQL函數進行連接。

對於1、配置數據源,配置完以後就可以編程操作數據庫了。

對於2、使用SQL函數進行連接,參考代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#includewindows.h

#includesql.h

#includesqlext.h

void

main()

{

HENV

henv;

//環境句柄

HDBC

hdbc;

//數據源句柄

HSTMT

hstmt;

//執行語句句柄

unsigned

char

datasource[]=”數據源名稱”;

//即源中設置的源名稱

unsigned

char

user[]=

“用戶名”;

//數據庫的帳戶名

unsigned

char

pwd[]=

“密碼”;

//數據庫的密碼

unsigned

char

search[]=”select

xm

from

stu

where

xh=0″;

SQLRETURN

retcode;

//記錄各SQL函數的返回情況

//

分配環境句柄

retcode=

SQLAllocEnv(henv);

//

等介於

SQLAllocHandle(SQL_HANDLE_ENV,

SQL_NULL

,

henv);

//

設置ODBC環境版本號為3.0

retcode=

SQLSetEnvAttr(henv,

SQL_ATTR_ODBC_VERSION,

(void*)SQL_OV_ODBC3,

0);

//

分配連接句柄

retcode=

SQLAllocConnect(henv,hdbc);

//

等介於

SQLAllocHandle(SQL_HANDLE_DBC,

henv,

hdbc);

//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)

//

SQLSetConnectAttr(hdbc,

SQL_LOGIN_TIMEOUT,

(SQLPOINTER)(rgbValue),

0);

//直接連接數據源

//

如果是windows身份驗證,第二、三參數可以是

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/153255.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-14 03:04
下一篇 2024-11-14 03:04

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論