當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程語言 » mysqlc語言

mysqlc語言-ag真人国际官网

發布時間: 2022-01-07 23:40:11

c語言如何調用mysql資料庫文件並進行對資料庫的操作呢。

mysql m_sqlcon;//聲明
mysql_init(&m_sqlcon);//初始化
mysql_real_connect(&m_sqlcon, "127.0.0.1", abc, "root", "hibernate", atoi("3306"),null,0)//鏈接
mysql_query(&m_sqlcon, "set names gb2312"); //設置查詢編碼格式
res = mysql_query(&m_sqlcon,"select * from ms_sendlist where flag = 1 order by style desc");//查詢
mysql_query(&m_sqlcon, sql);//插入,刪除

㈡ c語言連mysql

前面的一個mysql分配了內存空間,是一個對象。後面的一個是一個指針,它只有4個位元組的內存空間,這四個位元組是指針的空間,而mysql指向的區域並不確定。

至於為什麼後者會報錯,這就要看你怎麼寫了。c語言連接mysql的時候初始化語句為:

mysql*mysql_init(mysql*mysql)

這個函數分配或初始化與mysql_real_connect()相適應的mysql對象。如果mysql是null指針,該函數將分配、初始化、並返回新對象。否則,將初始化對象,並返回對象的地址。如果mysql_init()分配了新的對象,當調用mysql_close()來關閉連接時。將釋放該對象。如果無足夠內存以分配新的對象,返回null。

前面一個寫法應該這么調用:

mysql_init(&mysql);

後面一個寫法這么調用:

mysql=mysql_init(null);

㈢ c語言 中mysql_query()函數的返回值是什麼

mysql_query() 僅對 select,show,explain 或 describe 語句返回一個資源標識符,如果查詢執行不正確則返回 false。對於其它類型的 sql 語句,mysql_query() 在執行成功時返回 true,出錯時返回 false。非 false 的返回值意味著查詢是合法的並能夠被伺服器執行。這並不說明任何有關影響到的或返回的行數。 很有可能一條查詢執行成功了但並未影響到或並未返回任何行。

㈣ 怎麼把mysql中的語句嵌入到c語言中

兩種方法

1 在c中 調用system函數,執行mysql命令。
2 在c中,調用mysql的api ,也就是使用mysql介面庫, 訪問資料庫。
後者更通用一些。

㈤ c語言讀取mysql庫中的數據的程序頭文件怎麼設置

mysql c api編程步驟
1、首先我們要包含mysql的頭文件,並鏈接mysql動態庫。即添加以下語句:
#include // 進行網路編程需要winsock2.h
#include
#pragma comment(lib, 「libmysql.lib」)
2、創建mysql變數。如:
mysql mysql;
3、初始化mysql變數。
mysql_init(&mysql);
4、調用mysql_real_connect函數連接mysql資料庫。mysql_real_connect函數的原型如下:
mysql * stdcall mysql_real_connect(mysql *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
參數說明:mysql–前面定義的mysql變數;host–mysql伺服器的地址;user–登錄用戶名;passwd–登錄密碼;db–要連接的資料庫;port–mysql伺服器的tcp服務埠;unix_socket–unix連接方式,為null時表示不使用socket或管道機制;clientflag–mysql運行為odbc資料庫的標記,一般取0。連接失敗時該函數返回0。
5、調用mysql_real_query函數進行資料庫查詢。mysql_real_query函數的原型如下:
int stdcall mysql_real_query(mysql *mysql, const char *q, unsigned long length);
參數說明:mysql–前面定義的mysql變數;q–sql查詢語句;length–查詢語句的長度。
查詢成功則該函數返回0。
6、通過調用mysql_store_result或mysql_use_result函數返回的mysql_res變數獲取查詢結果數據。
兩個函數的原型分別為:
mysql_res * stdcall mysql_store_result(mysql *mysql);
mysql_res * stdcall mysql_use_result(mysql *mysql);
這兩個函數分別代表了獲取查詢結果的兩種方式。第一種,調用mysql_store_result函數將從mysql伺服器查詢的所有數據都存儲到客戶端,然後讀取;第二種,調用mysql_use_result初始化檢索,以便於後面一行一行的讀取結果集,而它本身並沒有從伺服器讀取任何數據,這種方式較之第一種速度更快且所需內存更少,但它會綁定伺服器,阻止其他線程更新任何錶,而且必須重復執行mysql_fetch_row讀取數據,直至返回null,否則未讀取的行會在下一次查詢時作為結果的一部分返回,故經常我們使用mysql_store_result。
7、調用mysql_fetch_row函數讀取結果集數據。
上述兩種方式最後都是重復調用mysql_fetch_row函數讀取數據。mysql_fetch_row函數的原型如下:
mysql_row stdcall mysql_fetch_row(mysql_res *result);
參數result就是mysql_store_result或mysql_use_result的返回值。
該函數返回mysql_row型的變數,即字元串數組,假設為row,則row〔i〕為第i個欄位的值。當到結果集尾部時,此函數返回null。
8、結果集用完後,調用mysql_free_result函數釋放結果集,以防內存泄露。mysql_free_result函數的原型如下:
void stdcall mysql_free_result(mysql_res *result);
9、不再查詢mysql資料庫時,調用mysql_close函數關閉資料庫連接。mysql_close函數的原型為:
void stdcall mysql_close(mysql *sock);

㈥ 用c語言如何對mysql資料庫進行操作

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

c連接mysql資料庫需要 mysql的頭文件和庫

可以參考

㈨ mysql查詢語句 c語言

#ifdef win32
#include
#include
#include
#else
#include
#include
#define sqlhandle static mysql
#endif
#include
#include
#include
#include

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; icols; 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(cols<1) 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; 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資料庫 代碼

//vc工具中添加e:\wamp\bin\mysql\mysql5.5.8\lib 路徑
//在工程設置-》鏈接》庫模塊中添加 libmysql.lib
#include
#include
#include
#include
#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
#endif
#include
#include
#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;
}

熱點內容
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:97
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:193
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
网站地图