一個連接mysql的c程序(c語言連接mysql資料庫代碼)

本文目錄一覽:

一個連接mysql的C程序,在debug版本可以順利連接,在release提示server gone away,求解!重賞!

解決MySQL server has gone away

1、應用程序(比如PHP)長時間的執行批量的MYSQL語句。最常見的就是採集或者新舊數據轉化。

解決方案:

在my.cnf文件中添加或者修改以下兩個變數:

wait_timeout=2880000

interactive_timeout = 2880000關於兩個變數的具體說明可以google或者看官方手冊。如果不能修改my.cnf,則可以在連接資料庫的時候設置CLIENT_INTERACTIVE,比如:

sql = “set interactive_timeout=24*3600”;

mysql_real_query(…)

2、執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob欄位。比如,圖片數據的處理

解決方案:

在my.cnf文件中添加或者修改以下變數:

max_allowed_packet = 10M(也可以設置自己需要的大小)

max_allowed_packet參數的作用是,用來控制其通信緩衝區的最大長度。

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;

}

c語言怎麼把鏈表數據寫進mysql

方法如下:

1.頭文件:

#include

#include

#include//這個是必需要包含的,下面對mysql的所有操作函數,都出自這裡

2.定義一個MYSQL變數:

MYSQLmysql;

這裡MYSQL是一個用於連接MySql資料庫的變數。

在後面對mysql資料庫的操作中,我們就用這個MYSQL變數作為句柄的。

3.定義資料庫參數:

charhost[32]=」localhost」;

charuser[32]=」username」;

charpasswd[32]=」pwd」;

chardbname[32]=」testdb」;

4.資料庫操作

1).初始化資料庫:

mysql_init(mysql);

2).連接資料庫:

mysql_real_connect(mysql,host,user,passwd,dbname,0,NULL,0);

我們在操作時,可以對以上的函數進行if測試,如果初始化或者連接出錯,作出相應提示,以便調試。

5.對資料庫的操作:

Mysql_query(mysql,「select*fromtestdbwherecondition」);

我們在實際操作中,為了更方便的使用程序中的某些變數,我們將會用到一個函數:

intsprintf(char*str,constchar*format,?);

這個函數用來格式化我們的字元串,然後將變數按照給你的格式,賦給第一個參數。

我們使用這個方法方法可以很方便的使用我們的變數來對資料庫進行操作。例如我們將要進行資料庫的查詢操作,我們就可以這樣使用:

sprintf(sql,」select*fromtestdbwhereusername=『%s』」,u_name);

然後使用mysql_query(mysql,sql)進行查詢。

MySQL是一個關係型資料庫管理系統,由瑞典MySQLAB公司開發,屬於Oracle旗下產品。MySQL是最流行的關係型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關係資料庫管理系統)應用軟體之一。

鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。相比於線性表順序結構,操作複雜。由於不必須按順序存儲,鏈表在插入的時候可以達到O(1)的複雜度,比另一種線性表順序錶快得多,但是查找一個節點或者訪問特定編號的節點則需要O(n)的時間,而線性表和順序表相應的時間複雜度分別是O(logn)和O(1)。

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

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

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

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

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

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

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

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

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

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

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • openeuler安裝資料庫方案

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

    編程 2025-04-29

發表回復

登錄後才能評論