當前位置:首頁 » 編程語言 » c語言與mysql

c語言與mysql

發布時間: 2022-09-28 07:55:00

❶ 如何用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

#include<windows.h>
#include<sql.h>
#include<sqlext.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身份驗證,第二、三參數可以是

❷ 如何用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
#include<windows.h>
#include<sql.h>
#include<sqlext.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身份驗證,第二、三參數可以是

❸ 關於linux下c語言鏈接mysql

和.net同樣的道理,你在.net也需要在你的部署包中包含dll才能去連接,除非你靜態聯接了相關的code,
在linux下你需要下載mysql的c庫開發包(libmysql++-dev
libmysql++2c2a
libmysqlclient15-dev
libmysqlclient15off)
這裡面已經包含了動態庫和靜態庫,如果是靜態庫鏈接,你就只需要把你的程序部署給別人即可,如果是動態鏈接,還需要把相關的.so也包含在你的部署包中分發給使用者

❹ 用C語言如何對MySQL資料庫進行操作

里的大部分代碼參考了MySQL發行包裡面的.c源文件,大家也可以去裡面找找相關的代碼,下面這段代碼實現了連接到本地MySQL伺服器上9tmd_bbs_utf8資料庫,從數據表tbb_user中根據輸入的userid取得該用戶的用戶名並列印輸出到終端。
if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯
#include <windows.h> #endif #include <stdio.h> #include <stdlib.h> #include "mysql.h"

我的機器上該文件在/usr/local/include/mysql下
定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼
define SELECT_QUERY "select username from tbb_user where userid = %d" int main(int argc, 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_select <userid>\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't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); if(mysql_query(sock,qbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); } printf("number of fields returned: %d\n",mysql_num_fields(res)); while (row = mysql_fetch_row(res)) { printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ; puts( "query ok !\n" ) ; } mysql_free_result(res); mysql_close(sock); exit(0); return 0;

為了兼容大部分的編譯器加入此行
}
編譯的時候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令
./mysql_select 1
將返回如下結果:
number of fields returned: 1 Ther userid #1 's username is: Michael query ok !

上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。

❺ 用c語言怎麼連接資料庫呢

25.2.2. C API函數概述
這里歸納了C API可使用的函數,並在下一節詳細介紹了它們。請參見25.2.3節,「C API函數描述」。

函數
描述

mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數。

mysql_autocommit()
切換 autocommit模式,ON/OFF

mysql_change_user()
更改打開連接上的用戶和資料庫。

mysql_charset_name()
返回用於連接的默認字元集的名稱。

mysql_close()
關閉伺服器連接。

mysql_commit()
提交事務。

mysql_connect()
連接到MySQL伺服器。該函數已不再被重視,使用mysql_real_connect()取代。

mysql_create_db()
創建資料庫。該函數已不再被重視,使用SQL語句CREATE DATABASE取而代之。

mysql_data_seek()
在查詢結果集中查找屬性行編號。

mysql_debug()
用給定的字元串執行DBUG_PUSH。

mysql_drop_db()
撤銷資料庫。該函數已不再被重視,使用SQL語句DROP DATABASE取而代之。

mysql_mp_debug_info()
讓伺服器將調試信息寫入日誌。

mysql_eof()
確定是否讀取了結果集的最後一行。該函數已不再被重視,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()
返回上次調用的MySQL函數的錯誤編號。

mysql_error()
返回上次調用的MySQL函數的錯誤消息。

mysql_escape_string()
為了用在SQL語句中,對特殊字元進行轉義處理。

mysql_fetch_field()
返回下一個表欄位的類型。

mysql_fetch_field_direct()
給定欄位編號,返回表欄位的類型。

mysql_fetch_fields()
返回所有欄位結構的數組。

mysql_fetch_lengths()
返回當前行中所有列的長度。

mysql_fetch_row()
從結果集中獲取下一行

mysql_field_seek()
將列游標置於指定的列。

mysql_field_count()
返回上次執行語句的結果列的數目。

mysql_field_tell()
返回上次mysql_fetch_field()所使用欄位游標的位置。

mysql_free_result()
釋放結果集使用的內存。

mysql_get_client_info()
以字元串形式返回客戶端版本信息。

mysql_get_client_version()
以整數形式返回客戶端版本信息。

mysql_get_host_info()
返回描述連接的字元串。

mysql_get_server_version()
以整數形式返回伺服器的版本號。

mysql_get_proto_info()
返回連接所使用的協議版本。

mysql_get_server_info()
返回伺服器的版本號。

mysql_info()
返回關於最近所執行查詢的信息。

mysql_init()
獲取或初始化MYSQL結構。

mysql_insert_id()
返回上一個查詢為AUTO_INCREMENT列生成的ID。

mysql_kill()
殺死給定的線程。

mysql_library_end()
最終確定MySQL C API庫。

mysql_library_init()
初始化MySQL C API庫。

mysql_list_dbs()
返回與簡單正則表達式匹配的資料庫名稱。

mysql_list_fields()
返回與簡單正則表達式匹配的欄位名稱。

mysql_list_processes()
返回當前伺服器線程的列表。

mysql_list_tables()
返回與簡單正則表達式匹配的表名。

mysql_more_results()
檢查是否還存在其他結果。

mysql_next_result()
在多語句執行過程中返回/初始化下一個結果。

mysql_num_fields()
返回結果集中的列數。

mysql_num_rows()
返回結果集中的行數。

mysql_options()
為mysql_connect()設置連接選項。

mysql_ping()
檢查與伺服器的連接是否工作,如有必要重新連接。

mysql_query()
執行指定為「以Null終結的字元串」的SQL查詢。

mysql_real_connect()
連接到MySQL伺服器。

mysql_real_escape_string()
考慮到連接的當前字元集,為了在SQL語句中使用,對字元串中的特殊字元進行轉義處理。

mysql_real_query()
執行指定為計數字元串的SQL查詢。

mysql_refresh()
刷新或復位表和高速緩沖。

mysql_reload()
通知伺服器再次載入授權表。

mysql_rollback()
回滾事務。

mysql_row_seek()
使用從mysql_row_tell()返回的值,查找結果集中的行偏移。

mysql_row_tell()
返回行游標位置。

mysql_select_db()
選擇資料庫。

mysql_server_end()
最終確定嵌入式伺服器庫。

mysql_server_init()
初始化嵌入式伺服器庫。

mysql_set_server_option()
為連接設置選項(如多語句)。

mysql_sqlstate()
返回關於上一個錯誤的SQLSTATE錯誤代碼。

mysql_shutdown()
關閉資料庫伺服器。

mysql_stat()
以字元串形式返回伺服器狀態。

mysql_store_result()
檢索完整的結果集至客戶端。

mysql_thread_id()
返回當前線程ID。

mysql_thread_safe()
如果客戶端已編譯為線程安全的,返回1。

mysql_use_result()
初始化逐行的結果集檢索。

mysql_warning_count()
返回上一個SQL語句的告警數。 詳見:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html

❻ 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資料庫和mySQLC語言封裝變數的問題如何解決

假如用戶輸入的姓名和年齡值分別保存在變數name,age中:
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO table values('%s','%d');", name, age);
mysql_query(&mysql_conn, sql_insert);
上述語句在執行完sprintf語句後,sql_insert中保存的是INSERT查詢語句字元串,sql_insert作為mysql_query()語句的參數即可實現正確的插入。

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

❾ 使用c語言操作MYSQL資料庫時可以編譯,也可以正常運行,就是顯示表內容之後就有提示段錯誤,求指導~~

段錯誤一般是指針有問題,或者越界之類的
num_row = (int)mysql_num_rows(res);
num_col = (int)mysql_num_fields(res);
for(r=0;r<num_col;r++)
{
row = mysql_fetch_row(res);//檢索一個結果集合的下一行
for(c=0;c<num_col;c++)
printf("%s ",row[c]);
printf("\n");
}
這段代碼很可疑啊

❿ 怎麼用C語言更新mysql中的數據

游戲進度可以保存在資料庫啊,比如游戲開始時都會讀取資料庫的某個初始化表,你說的地圖也可以初始化啊,地圖是已經寫好的,只需要記住關數就行;如果是角色扮演類,完全可以保存關數和最後的坐標就行;

熱點內容
安卓手機什麼是雙卡 發布:2024-12-25 23:54:40 瀏覽:892
dnd伺服器ip地址 發布:2024-12-25 23:48:08 瀏覽:196
cad解壓沒有 發布:2024-12-25 23:48:03 瀏覽:14
超星做題腳本 發布:2024-12-25 23:35:14 瀏覽:908
打開加密pdf 發布:2024-12-25 23:24:57 瀏覽:742
動態sql查詢條件 發布:2024-12-25 23:24:56 瀏覽:303
qq群上傳速度 發布:2024-12-25 23:13:09 瀏覽:480
編程工程學 發布:2024-12-25 23:07:28 瀏覽:717
李小璐賈乃亮超級訪問 發布:2024-12-25 22:47:50 瀏覽:719
電信精品寬頻多ip路由如何配置 發布:2024-12-25 22:45:44 瀏覽:384