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

c語言mysqlapi

發布時間: 2023-01-20 22:26:22

① C語言API libmysql mysql的操作函數mysql_close()不能正常關閉連接

一秒太快了吧,沒必要這樣啊,有連接句柄不用每次打開關閉,只用處理好互斥就行啊。

② 什麼叫以來mysql 的api

API(Application Programming Interface,應用程序編程介面)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟體或硬體得以訪問一組常式的能力,而又無需訪問源碼,或理解內部工作機制的細節。

所以mysql的api即mysql系統庫提供的現有介面,供開發人員調用。如mysql C語言 API,等等。

③ 用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說明出來。

linux下用C語言對mysql中select語句的封裝

1.需要用到mysql c api
2.步驟通常是:連接資料庫,執行查詢,異常處理這些。
3.你需要對api 進行一些了解,然後合理調用。
參考代碼:
//連接代碼:

/*
* connect1.c - connect to and disconnect from MySQL server
*/
#include <my_global.h>
#include <my_sys.h>
#include <mysql.h>

static char *opt_host_name = NULL; /* server host (default=localhost) */
static char *opt_user_name = NULL; /* username (default=login name) */
static char *opt_password = NULL; /* password (default=none) */
static unsigned int opt_port_num = 0; /* port number (use built-in value) */
static char *opt_socket_name = NULL; /* socket name (use built-in value) */
static char *opt_db_name = NULL; /* database name (default=none) */
static unsigned int opt_flags = 0; /* connection flags (none) */
static MYSQL *conn; /* pointer to connection handler */
int
main (int argc, char *argv[])
{
/* initialize connection handler */
conn = mysql_init (NULL);
if (conn == NULL)
{
fprintf (stderr, "mysql_init() failed (probably out of memory)\n");
exit (1);
}
/* connect to server */
if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL)
{
fprintf (stderr, "mysql_real_connect() failed\n");
mysql_close (conn);
exit (1);
}
/* disconnect from server */
mysql_close (conn);
exit (0);
}

//處理sql 語句的函數:

void
process_statement (MYSQL *conn, char *stmt_str)
{
MYSQL_RES *res_set;
if (mysql_query (conn, stmt_str) != 0) /* the statement failed */
{
print_error (conn, "Could not execute statement");
return;
}
/* the statement succeeded; determine whether it returned data */
res_set = mysql_store_result (conn);
if (res_set) /* a result set was returned */
{
/* process rows and then free the result set */
process_result_set (conn, res_set);
mysql_free_result (res_set);
}
else /* no result set was returned */
{
/*
* does the lack of a result set mean that the statement didn't
* return one, or that it should have but an error occurred?
*/
if (mysql_field_count (conn) == 0)
{
/*
* statement generated no result set (it was not a SELECT,
* SHOW, DESCRIBE, etc.); just report rows-affected value.
*/
391
Processing SQL Statements
printf ("%lu rows affected\n",
(unsigned long) mysql_affected_rows (conn));
}
else /* an error occurred */
{
print_error (conn, "Could not retrieve result set");
}
}
}

//以上提供的是常規的處理,你需要根據實際情況完善。
//同時調用了一些mysql 的api函數。

ref:
MySQL
(Fourth Edition)
Paul DuBois

⑤ C程序中怎麼用mysql C API 創建新表table

應該是可以建表的,
沒有理由只能用手動建表。
我找了一段代碼,還沒試。誰能給個可用的代碼

Here is an extract.....
I hope it helps.
please remember....u need to compile it with
-lmysqlclient -lz options.

#include <string.h>
#include <stdio.h>
#include "/usr/include/mysql/mysql.h"

MYSQL imysql ;
MYSQL_RES * mydata;
unsigned int num_fields;
unsigned int num_rows;
unsigned long *lengths;

MYSQL_ROW row,;
MYSQL_FIELD *fields;

char a[241]="";
char querystring[241]="";

void mysqlinit(char user[20], char password[20], char db[20]);

void main()
{
mysqlinit("username","userpassword","database");

a[0] ='\0';
strcat(a,"Create Table ");
strcat(a,tablename);
strcat(a,"(pepsi bigint Not Null Primary,coke bigint Not Null);");
printf(a);
strcpy(querystring,a);

if (!mysql_real_query(&imysql,querystring,strlen(querystring)))
{ mydata = mysql_store_result(&imysql); }
else
{ printf("Oops ! Error %d:
%s\n",mysql_errno(&imysql),mysql_error(&imysql));
mysql_close(&imysql);
exit(0);
}

mysql_close(&imysql);
}

void mysqlinit(char user[20], char password[20], char db[20])
{
mysql_init(&imysql);
mysql_options(&imysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&imysql,"",user,password,db,0,NULL,0))
{
fprintf(stderr,"FAILED !!!! Error %s\n",mysql_error(&imysql));
}
else
{
printf( "Connection with Database established !\n");
}
}

⑥ 怎麼把MYSQL中的語句嵌入到C語言中

兩種方法:
方法一:在C中 調用system函數,執行mysql命令。
方法二:在C中,調用mysql的API ,也就是使用mysql介面庫, 訪問資料庫。
後者更通用一些。

⑦ 如何使用mysql的API在c/c++的代碼中,創建一個存儲過程

MySQL的概述
MySQL是一個小型關系型資料庫管理系統,開發者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。目前MySQL被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。MySQL的官方網站的網址是:
[編輯本段]MySQL的特性
1.使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性
2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統
3.為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、php、Python、Ruby和Tcl等。
4.支持多線程,充分利用CPU資源
5.優化的SQL查詢演算法,有效地提高查詢速度
6.既能夠作為一個單獨的應用程序應用在客戶端伺服器網路環境中,也能夠作為一個庫而嵌入到其他的軟體中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名
7.提供TCP/IP、ODBC和JDBC等多種資料庫連接途徑
8.提供用於管理、檢查、優化資料庫操作的管理工具
9.可以處理擁有上千萬條記錄的大型資料庫
[編輯本段]MySQL的應用
與其他的大型資料庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於MySQL是開放源碼軟體,因此可以大大降低總體擁有成本。
目前Internet上流行的網站構架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統,Apache作為Web伺服器,MySQL作為資料庫,PHP作為伺服器端腳本解釋器。由於這四個軟體都是遵循GPL的開放源碼軟體,因此使用這種方式不用花一分錢就可以建立起一個穩定、免費的網站系統。
[編輯本段]MySQL管理
可以使用命令行工具管理MySQL資料庫(命令mysql 和 mysqladmin),也可以從MySQL的網站下載圖形管理工具MySQL Administrator和MySQL Query Browser。
phpMyAdmin是由php寫成的MySQL資料庫系統管理程式,讓管理者可用Web介面管理MySQL資料庫。
phpMyBackupPro也是由PHP寫成的,可以透過Web介面創建和管理資料庫。它可以創建偽cronjobs,可以用來自動在某個時間或周期備份MySQL 資料庫。
另外,還有其他的GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat 等等。
[編輯本段]Mysql存儲引擎
MyISAM Mysql的默認資料庫,最為常用。擁有較高的插入,查詢速度,但不支持事務
InnoDB 事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定
BDB 源自Berkeley DB,事務型資料庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性
Memory 所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在Mysql重新啟動時丟失
Merge 將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用
Archive 非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差
Federated 將不同的Mysql伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分布式應用
Cluster/NDB 高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
CSV 邏輯上由逗號分割數據的存儲引擎
BlackHole 黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做復制的中繼
另外,Mysql的存儲引擎介面定義良好。有興趣的開發者通過閱讀文檔編寫自己的存儲引擎。
[編輯本段]Mysql最常見的應用架構
單點(Single),適合小規模應用
復制(Replication),適合中小規模應用
集群(Cluster),適合大規模應用
[編輯本段]mysql歷史版本
MySQL公司目前在同時開發兩個版本的軟體,4.1版以及5.0版。4.1版本的代碼已經發布並有望在8個月後公布最終代碼。而5.0版本的最後產品將在6個月後發布。
MySQL4.1版本中增加了不少新的性能,包括對主鍵的更高速度的緩存,對子查詢的更好的支持,以及應網路約會網站所要求的,基於地理信息的查詢。
而其同步開發的5.0版本則把目標對准了企業用戶,對於4.1版本中的所有新特性,5.0版本悉數收入囊中,並且獨具以下特點:對外鍵的良好支持;系統自動報錯機制以及對存儲過程的充分支持。

SQL全稱是「結構化查詢語言(Structured Query Language)」
SQL(STructured Query Language)是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。
SQL同時也是資料庫腳本文件的擴展名。
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。他不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操作對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語句可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的功能只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
結構化查詢語言(Structured Query Language)最早是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言得到了廣泛的應用。如今無論是像Oracle、Sybase、Informix、SQL Server這些大型的資料庫管理系統,還是像Visual Foxporo、PowerBuilder這些PC上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
美國國家標准局(ANSI)與國際標准化組織(ISO)已經制定了SQL標准。ANSI是一個美國工業和商業集團組織,負責開發美國的商務和通訊標准。ANSI同時也是ISO和International Electrotechnical Commission(IEC)的成員之一。ANSI 發布與國際標准組織相應的美國標准。1992年,ISO和IEC發布了SQL國際標准,稱為SQL-92。ANSI隨之發布的相應標準是ANSI SQL-92。ANSI SQL-92有時被稱為ANSI SQL。盡管不同的關系資料庫使用的SQL版本有一些差異,但大多數都遵循 ANSI SQL 標准。SQL Server使用ANSI SQL-92的擴展集,稱為T-SQL,其遵循ANSI制定的 SQL-92標准。
SQL語言包含4個部分:
※ 數據定義語言(DDL),例如:CREATE、DROP、ALTER等語句。
※ 數據操作語言(DML),例如:INSERT、UPDATE、DELETE語句。
※ 數據查詢語言(DQL),例如:SELECT語句。
※ 數據控制語言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等語句。
SQL語言包括三種主要程序設計語言類別的陳述式:數據定義語言(DDL),數據操作語言(DML)及數據控制語言(DCL)。

熱點內容
壓縮長抱枕 發布:2025-07-18 16:13:38 瀏覽:503
如何使用wifi熱點配置網路 發布:2025-07-18 16:06:25 瀏覽:968
android軟鍵盤數字 發布:2025-07-18 16:03:18 瀏覽:610
三菱plc編程軟體官網 發布:2025-07-18 15:59:59 瀏覽:436
gse源碼 發布:2025-07-18 15:58:15 瀏覽:626
編譯鏈c語言執行速度 發布:2025-07-18 15:52:51 瀏覽:554
在線編程課程 發布:2025-07-18 15:46:56 瀏覽:172
生兔子演算法循環 發布:2025-07-18 15:44:32 瀏覽:46
背包規劃演算法 發布:2025-07-18 15:44:27 瀏覽:109
微信安卓手機哪裡設置鈴聲 發布:2025-07-18 15:36:54 瀏覽:780