mysqlc語言編程,mysql編程用啥語言

本文目錄一覽:

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;

}

mysql與c語言連接,代碼求解釋。

if (!mysql_real_connect(mysql,”localhost”, “root”, “”, “drug management”, 3306, NULL, 0)) //判斷數據庫連接是否成功

 if(t) //t是mysql_real_query的返值,使用if來判斷sql語句執行是否成功。

用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說明出來。

mysql數據庫

MySQL數據庫一般指MySQL,MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發。

mysql是目前網站以及APP應用上用得較多的一個開源的關係型數據庫系統,可以對數據進行保存,分段化的數據保存,也可以對其數據進行檢索,查詢等功能的數據庫。

默認的mysql數據庫中存有一個庫這個就是mysql的系統數據庫,可以對其保存系統的數據包括mysql數據庫的信息,數據庫root賬號,普通賬號,以及數據庫的名稱,還有數據庫的一些表還有一些數字型的數據類型結構都會有所保存。

mysql數據庫的優點

(1)MySQL數據庫是用C和C++語言編寫的,並且使用了多種編輯器進行測試,以保證源碼的可移植性。

(2)支持多個操作系統例如:Windows、Linux、Mac OS等等。

(3)支持多線程,可以充分的利用CPU資源。

(4)為多種編程語言提供API,包括C語言、Java、PHP、Python語言等。

(5)MySQL優化了SQL算法,有效的提高了查詢速度。

(6)MySQL內提供了用於管理,檢查以及優化數據庫操作的管理工具。

(7)它能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也可以作為一個庫嵌入到其他的軟件中並提供多種語言支持。

mysql查詢語句 C語言

#ifdef WIN32

#include windows.h

#include odbcinst.h

#include sqlext.h

#else

#include mysql.h

#include unistd.h

#define SQLHANDLE static MYSQL

#endif

#include stdarg.h

#include stdlib.h

#include stdio.h

#include string.h

SQLHANDLE hDBEnv, hDBC;

int DB_Open(char * dbcn, char * usr, char * pwd)

{

int r;

#ifdef WIN32

r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, hDBEnv);

if(r) return 0;

r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,

(void*)SQL_OV_ODBC3,0);

if(r) return 0;

r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, hDBC);

if(r) return 0;

r = SQLConnect(hDBC,

(unsigned char *)dbcn, strlen(dbcn),

(unsigned char *)usr, strlen(usr),

(unsigned char *)pwd, strlen(pwd));

return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;

#else

mysql_init(hDBC);

MYSQL * rx = mysql_real_connect(

hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);

if(!rx) return 0;

return 1;

#endif

}//end DB_Open

int DB_Exec(char * sql)

{

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, hStatement);

SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));

SQLCloseCursor(hStatement);

SQLFreeHandle(SQL_HANDLE_STMT, hStatement);

hStatement = NULL;

#else

mysql_real_query (hDBC, sql, strlen(sql));

#endif

return 1;

}//end DB_Exec

int DB_Close(void)

{

#ifdef WIN32

SQLDisconnect(hDBC);

SQLFreeHandle(SQL_HANDLE_DBC, hDBC);

SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);

#else

mysql_close(hDBC);

#endif

return 1;

}//DB_Close()

#ifndef WIN32

typedef struct tagMySQLRecordset {

MYSQL_RES * hRecord;

void * * row;

int * size;

int cols;

} MYSQLRecordset;

#endif

void DB_CleanQuery(void *hRecordset)

{

if(!hRecordset) return;

#ifdef WIN32

__try {

SQLCloseCursor(hRecordset);

SQLFreeHandle(SQL_HANDLE_STMT, hRecordset);

hRecordset = NULL;

}__finally{

return;

}//end try

#else

MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;

mysql_free_result (hRec-hRecord);

free(hRec-row); hRec-row = NULL;

free(hRec-size); hRec-size = NULL;

free(hRec); hRec = NULL;

#endif

}//end DB_CleanQuery

int DB_Next(void * hRecordset)

{

int r=0; if(!hRecordset) return 0;

#ifdef WIN32

r = SQLFetch(hRecordset);

r = r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

DB_CleanQuery(hRecordset);

}//end if

#else

MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;

MYSQL_ROW row = mysql_fetch_row (hRec-hRecord);

if(row) {

for(int i=0; ihRec-cols; i++) {

memcpy(hRec-row[i], row[i], hRec-size[i]);

}//next i

r = 1;

}else{

DB_CleanQuery(hRecordset);

r = 0;

}//end if

#endif

return r;

}//end DB_Next

int DB_params_count(const char * fmt)

{

int i=0, j=0;

while(fmt[i]) {

if(fmt[i]==’%’) j++;

i++;

}//end while

return j;

}//end DB_params_count

void * DB_Query(char *sql, const char *fmt, …)

{

int r=0;

int cols = DB_params_count(fmt);

if(cols1) return NULL;

#ifdef WIN32

SQLHANDLE hStatement = NULL;

SQLAllocHandle(SQL_HANDLE_STMT, hDBC, hStatement);

r = SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));

r = r==SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;

if(!r) {

return NULL;

}//end if

#else

r = mysql_real_query (hDBC, sql, strlen(sql));

if(r) return NULL;

MYSQL_RES * rec = NULL;

rec = mysql_store_result (hDBC);

if(!rec) return NULL;

MYSQLRecordset * hStatement

= (MYSQLRecordset *)malloc(sizeof(MYSQLRecordset));

if(!hStatement) return NULL;

memset(hStatement, 0, sizeof(MYSQLRecordset));

hStatement-hRecord = rec;

hStatement-cols = cols;

hStatement-row = (void **)malloc(cols * sizeof(void *));

memset(hStatement-row, 0, cols * sizeof(void *));

hStatement-size = (int *)malloc(cols * sizeof(int));

memset(hStatement-size, 0, cols * sizeof(int));

#endif

va_list ap; va_start(ap, fmt);

void * var; char buf[32];

int i=0,j=0,k=0,sz=0; char c=0;

int len = strlen(fmt); int bad=1;

#ifdef WIN32

int col=1;

#else

int col=0;

#endif

while(fmt[i]) {

c = fmt[i++];

if(c != ‘%’) continue;

c = fmt[i++];

var = va_arg(ap, void *);

if(c == ‘d’) {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_SLONG, var, 4,NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sizeof(long);

#endif

col++;

continue;

}//end if

if(c == ‘f’) {

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_FLOAT, var, 4,NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sizeof(float);

#endif

col++;

continue;

}//end if

memset(buf, 0, 32); bad=1;

for(j=i-1; jlen; j++) {

c = fmt[j];

if(c=’0′ c=’9′) buf[j-i+1]=c;

if(c==’s’) {bad=0; k=j+1; break;}

}//next j

if(bad) return NULL;

sscanf(buf, “%d”, sz);

#ifdef WIN32

SQLBindCol(hStatement, col, SQL_C_CHAR, var, sz, NULL);

#else

hStatement-row[col] = var;

hStatement-size[col] = sz;

#endif

col++;

i = k;

}//end while

va_end(ap);

return hStatement;

}//end DB_Rec

如何用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-hant/n/240288.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:21
下一篇 2024-12-12 12:21

相關推薦

  • 如何修改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

發表回復

登錄後才能評論