c連接mysql數據庫(odbc連接mysql數據庫)

  • 1、用C語言怎麼實現與數據庫的連接
  • 2、C語言怎樣連接mysql數據庫
  • 3、c語言怎麼連接mysql數據庫 代碼
  • 4、如何用C語言連接MYSQL數據庫
  • 5、c語言怎麼連接mysql數據庫
  • 6、用c語言怎麼連接數據庫呢?

#includemysql/mysql.h

#includestdio.h

intmain()

{

MYSQL*conn;

MYSQL_RES*res;

MYSQL_ROWrow;

char*server=”localhost”;//本地連接

char*user=”root”;//

char*password=”525215980″;//mysql密碼

char*database=”student”;//數據庫名

char*query=”select*fromclass”;//需要查詢的語句

intt,r;

conn=mysql_init(NULL);

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

{

printf(“Errorconnectingtodatabase:%s\n”,mysql_error(conn));

}else{

printf(“Connected…\n”);

}

t=mysql_query(conn,query);

if(t)

{

printf(“Errormakingquery:%s\n”,mysql_error(conn));

}else{

printf(“Querymade…\n”);

res=mysql_use_result(conn);

if(res)

{

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

{

//printf(“num=%d\n”,mysql_num_fields(res));//列數

for(t=0;tmysql_num_fields(res);t++)

printf(“%8s”,row[t]);

printf(“\n”);

}

}

mysql_free_result(res);

}

mysql_close(conn);

return0;

}

擴展資料

C語言使用注意事項:

1、指針是c語言的靈魂,一定要靈活的使用它:

(1)、指針的聲明,創建,賦值,銷毀等

(2)、指針的類型轉換,傳參,回調等

2、遞歸調用也會經常用到:

(1)、遞歸遍歷樹結構

(2)、遞歸搜索

mysql是有c語言接口的,安裝相應庫後就可以鏈接了,一般連接mysql的函數是mysql_connect或者mysql_real_connect(大概就是這麼拼的吧。。。)可以使用mysql_query執行sql語句

//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;

}

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身份驗證,第二、三參數可以是

mysql是有c語言接口的,安裝相應庫後就可以鏈接了,一般連接mysql的函數是mysql_connect或者mysql_real_connect(大概就是這麼拼的吧。。。)可以使用mysql_query執行sql語句

1、配置ODBC數據源。

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

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

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

#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身份驗證,第二、三參數可以是

,也可以是任何字串

//SQL_NTS 即 “

retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );

//分配語句句柄

retcode= SQLAllocStmt(hdbc,hstmt); // 等介於 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, hstmt);

//直接執行查詢語句

retcode=SQLExecDirect(hstmt,search,SQL_NTS);

//將數據緩衝區綁定數據庫中的相應字段(i是查詢結果集列號,queryData是綁定緩衝區,BUFF_LENGTH是緩衝區長度)

SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);

//遍歷結果集到相應緩衝區 queryData

SQLFetch(hstmt);

/*

*對遍歷結果的相關操作,如顯示等

*/

//注意釋放順序,否則會造成未知錯誤!

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

}

原創文章,作者:NF2XC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126335.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NF2XC的頭像NF2XC
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相關推薦

  • 如何修改mysql的端口號

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

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

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

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

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

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

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

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論