本文目錄一覽:
- 1、c語言怎麼連接mysql資料庫 代碼
- 2、mysql與c語言連接,代碼求解釋。
- 3、用C語言如何對MySQL資料庫進行操作
- 4、mysql資料庫
- 5、mysql查詢語句 C語言
- 6、如何用C語言連接MYSQL資料庫
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;
}
mysql與c語言連接,代碼求解釋。
if (!mysql_real_connect(mysql,”localhost”, “root”, “”, “drug management”, 3306, NULL, 0)) //判斷資料庫連接是否成功
if(t) //t是mysql_real_query的返值,使用if來判斷sql語句執行是否成功。
用C語言如何對MySQL資料庫進行操作
有時為了性能,我們會直接用C語言來開發相關的模塊,尤其在我們的web應用中,雖然PHP、JSP等腳本均提供了MySQL的介面,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發的多個項目中就使用了C語言編寫的這類介面,然後再編譯到php裡面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL資料庫,並且讀取裡面的數據返回,同時如何進行編譯。if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯#includewindows.h#endif#includestdio.h#includestdlib.h#includemysql.h我的機器上該文件在/usr/local/include/mysql下定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,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_selectuserid\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’tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));if(mysql_query(sock,qbuf)){fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn’tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d’susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0]));puts(queryok!\n);}mysql_free_result(res);mysql_close(sock);exit(0);return0;為了兼容大部分的編譯器加入此行}編譯的時候,使用下面的命令gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令./mysql_select 1將返回如下結果:numberoffieldsreturned:1Theruserid#1’susernameis:Michaelqueryok!上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔源碼天空,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。
mysql資料庫
MySQL資料庫一般指MySQL,MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發。
mysql是目前網站以及APP應用上用得較多的一個開源的關係型資料庫系統,可以對數據進行保存,分段化的數據保存,也可以對其數據進行檢索,查詢等功能的資料庫。
默認的mysql資料庫中存有一個庫這個就是mysql的系統資料庫,可以對其保存系統的數據包括mysql資料庫的信息,資料庫root賬號,普通賬號,以及資料庫的名稱,還有資料庫的一些表還有一些數字型的數據類型結構都會有所保存。
mysql資料庫的優點
(1)MySQL資料庫是用C和C++語言編寫的,並且使用了多種編輯器進行測試,以保證源碼的可移植性。
(2)支持多個操作系統例如:Windows、Linux、Mac OS等等。
(3)支持多線程,可以充分的利用CPU資源。
(4)為多種編程語言提供API,包括C語言、Java、PHP、Python語言等。
(5)MySQL優化了SQL演算法,有效的提高了查詢速度。
(6)MySQL內提供了用於管理,檢查以及優化資料庫操作的管理工具。
(7)它能夠作為一個單獨的應用程序應用在客戶端伺服器網路環境中,也可以作為一個庫嵌入到其他的軟體中並提供多種語言支持。
mysql查詢語句 C語言
#ifdef WIN32
#include windows.h
#include odbcinst.h
#include sqlext.h
#else
#include mysql.h
#include unistd.h
#define SQLHANDLE static MYSQL
#endif
#include stdarg.h
#include stdlib.h
#include stdio.h
#include string.h
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; ihRec-cols; 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(cols1) 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; jlen; 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資料庫
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身份驗證,第二、三參數可以是
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240288.html