本文目錄一覽:
- 1、一個連接mysql的C程序,在debug版本可以順利連接,在release提示server gone away,求解!重賞!
- 2、c語言怎麼連接mysql資料庫 代碼
- 3、c語言怎麼把鏈表數據寫進mysql
- 4、如何用C語言連接MYSQL資料庫
- 5、mysql與c語言連接,代碼求解釋。
一個連接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