如何用c 控制mysql數據庫_用C語言操作MySQL數據庫

函數

描述

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_dump_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語句的告警數。

與MySQL交互時,應用程序應使用該一般性原則:

1.通過調用mysql_library_init(),初始化MySQL庫。庫可以是mysqlclient C客戶端庫,或mysqld嵌入式服務器庫,具體情況取決于應用程序是否與“-libmysqlclient”或“-libmysqld”標志鏈接。

2.通過調用mysql_init()初始化連接處理程序,并通過調用mysql_real_connect()連接到服務器。

3.發出SQL語句并處理其結果。(在下面的討論中,詳細介紹了使用它的方法)。

4.通過調用mysql_close(),關閉與MySQL服務器的連接。

5.通過調用mysql_library_end(),結束MySQL庫的使用。

介紹常用到的MYSQL相關的C變量類型。這些類型在我們后面定義變量的時候會用到

1、MYSQL

要連接MYSQL,必須建立MYSQL實例,通過mysql_init初始化方能開始進行連接

示例:

MYSQL mysql;#創建MYSQL實例

mysql_init(&mysql);#初始化開始進行連接

2、MYSQL_RES

這個結構代表返回行的一個查詢的(SELECT,SHOW,DESCRIBE,EXPLAIN)的結果。返回的數據稱為“數據集”。從數據庫讀取數據,最后就是從MYSQL_RES中讀取數據。

PS:類似于JAVA里面的ResultSet變量一樣,將結果集存入到此變量中再從它里面去讀數據。

3、MYSQL_ROW

這是一個行數據的類型安全(type-safe)的表示。當前它實現為一個計數字節的字符串數組。行通過調用mysql_fetch_row()獲得

4、MYSQL_FIELD

你可以通過重復調用mysql_fetch_field()對每一列獲得MYSQL_FIELD結構。這個結構包含字段信息,例如字段名、類型和大小。

PS:此變量定義的是列的相關屬性問題!

示例一:實現遍歷查詢select * from table-name操作

#include "windows.h"

#include "mysql.h"

#pragma comment(lib,"libmySQL.lib")

int main()

{

MYSQL mysql;//mysql連接

MYSQL_RES *res; //這個結構代表返回行的一個查詢結果集

MYSQL_ROW row; //一個行數據的類型安全(type-safe)的表示

char *query;//查詢語句

int t,r;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,"localhost", "root", "123", "test",3306,NULL,0))

{

printf( "Error connecting to database: %s",mysql_error(&mysql));

} else

printf("Connected...");

query="SET CHARACTER SET utf8"; //設置編碼

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("編碼設置失敗");

}

query=" select * from a ";

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("執行查詢時出現異常: %s",mysql_error(&mysql));

}else

printf("[%s]構建成功",query);

res=mysql_store_result(&mysql);

while(row=mysql_fetch_row(res))

{

/*

for(t=0;t

{

printf("%s" " ",row[t]);

}

*/

printf("%s",row[1]);表示查詢的第幾個字段的!也還可以遍歷全部字段信息

printf("\n");

}

mysql_free_result(res);

mysql_close(&mysql);

return 0;

}

示例二:執行插入、更新、刪除操作

#include "windows.h"

#include "mysql.h"

#pragma comment(lib,"libmySQL.lib")

int main()

{

MYSQL mysql;//mysql連接

MYSQL_RES *res; //這個結構代表返回行的一個查詢結果集

MYSQL_ROW row; //一個行數據的類型安全(type-safe)的表示

char *query;//查詢語句

int t,r;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,"localhost", "root", "123", "test",3306,NULL,0))

{

printf( "Error connecting to database: %s",mysql_error(&mysql));

} else

printf("Connected...");

query="SET CHARACTER SET utf8"; //設置編碼

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("編碼設置失敗");

}

query="insert into a(name,age) values('w',9)";

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("執行查詢時出現異常: %s",mysql_error(&mysql));

}else

printf("[%s]構建成功",query);

mysql_close(&mysql);

return 0;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373433.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373433.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373433.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構(RMQ):POJ 3624 Balanced Lineup

Balanced LineupDescription For the daily milking, Farmer Johns N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a conti…

Apache Thrift快速入門教程

Thrift是一種跨語言RPC框架,最初是在Facebook上開發的,現在作為Apache項目開源。 這篇文章將描述如何以不同的模式(例如阻塞,非阻塞和異步)編寫Thrift服務和客戶端。 (我覺得后兩種模式的文檔較少&#xff…

數組拆分為新數組

package com.classes;//已知數組a,將奇數位置元素存到b數組中,偶數位置元素存到c數組中public class Shuzu1118_4 { public static void main(String[] args) { int [] a{3,6,9,1,4,7,2,5,8}; int [] b; //定義數組b int [] c; //定義數組c//先找出數組…

java數組交集_java數組的交集和并集

前兩天給我出了一道題,求數組的并集和交集,然后我試著寫一下,很尷尬,由于長時間沒有寫過代碼,一開始數組是如何定義的給忘了。當時我說了我的思路,不過也是很low的做法,查閱網上的一些資料&…

ADF聲明性組件示例

在我以前的文章中,我答應展示如何為智能值列表創建ADF聲明性組件。 因此,我將創建一個包含三個元素的組件:標簽,輸入文本和值的組合框列表。 那很容易。 我在工作空間中創建了一個單獨的ADF ViewController項目: 在此項…

VS2015 安裝包缺失(聯網安裝失敗)問題解決

Win7 x86 測試可行 * 如果前面有嘗試過安裝不成功, 一定要用卸載程序刪除已安裝的部分,否則會出亂子. 1. 或者是用虛擬光驅加載ISO, 或者是解壓到硬盤上, 都沒有關系. 2. 用管理員權限啟動CMD控制臺, 進入VS2015 安裝盤的根目錄 (vs_enterprise.exe 所在的目錄). 3. 執行命令 …

java藍橋暑假班_Java實現 藍橋杯VIP 算法提高 班級排名

算法提高 班級排名時間限制:1.0s 內存限制:256.0MB問題描述達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之后,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了&#xff…

$.ajax所犯的錯誤。success后面不執行

$.ajax({ type: post, url: ../AshxHandler/HandlerAddPhoto.ashx, data: { clientPath: photoName }, dataType: text, cache: false, success: function (data) { alert(1); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(上傳圖片出現錯誤&#xf…

WhateverOrigin –與Heroku和Play對抗相同的原產地政策! 構架

不久前,我在編碼 Bitcoin Pie時發現需要克服臭名昭著的Same Origin Policy ,該政策限制了運行在客戶端瀏覽器上的javascript可以訪問的域。 通過Stack Overflow,我找到了一個名為Any Origin的站點,這基本上是無需設置專用服務器即…

Solr集群更新配置的方式

solr集群中配置文件是經常更新的,頻率最高的也就是schema.xml和solrconfig.xml這兩個配置文件了,對于更新配置文件之前,我們先了解一下集群項目結構 由于在集群模式下,solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理…

java文本框雙擊可編輯_java swing 文本域雙擊變為可編輯

java swing如何實現文本域雙擊變為可編輯呢?給文本域添加鼠標事件監聽程序即可:resultTA1new AssistPopupTextArea();resultTA1.setEditable(false);resultTA1.setLineWrap(true);resultTA1.setWrapStyleWord(true);resultTA1.addMouseListener(new MouseAdapter() {Overridep…

點擊出現黑色背景的解決

-webkit-tap-highlight-color:rgba(0,0,0,0);轉載于:https://www.cnblogs.com/luckyXcc/p/6085582.html

OSGi簡介–模塊化Java

OSGi聯盟是這一擱淺的管理機構,它始于1999年。其最初目標是為網絡設備創建開放擱淺。 基于此思想,此規范也針對Java引入。 Eclipse在Java中是第一個。 他們于2004年6月推出了基于OSGi的Eclipse IDE。 OSGi是在Java中定義動態模塊的方法。 主要為Java實現…

HDU FatMouse's Speed 基本DP

題意:要求找到的體重遞增,速度遞減的老鼠,并且輸出最長的長度數,而且輸出各自的序列數。Special Judge 思路:先按體重由小到大排序,再找最長速度遞減序列。 轉移方程:mou[i].w>mou[j].w&am…

java xmpp openfire_搭建Xmpp服務器Openfire

step1、 安裝java環境這里是檢測是否安裝java的網頁如沒有安裝則進行以下步驟1、下載jdk7的mac版:jdk-7u79-macosx-x64.dmg2、安裝好之后,在命令行進入以下路徑查看#cd /Library/Java/JavaVirtualMachines/3、再查看你自己安裝的版本#ls版本為jdk-8u171-…

JavaFX移動應用程序最佳實踐,第1部分

到現在為止,所有對JavaFX感興趣的人都會知道,JavaFX Mobile發行了不久 前。 可以肯定的是,這真是令人難以置信。 我感到筋疲力盡,在發行期間我什至沒有精力去寫博客…… 但是到目前為止,我感到很恢復,并且希…

Spark程序運行報錯解決(1)

報錯內容:System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. 解決:Window——Preference——Java——Installed JREs——選中一個Jre 后 Edit 在Default VM arguments 里加入:-Xmx512M 轉載于:https://w…

java setsolinger_java socket 的參數選項解讀(轉)

在MulticastSocket的源代碼里有設置多播的方法:public void setInterface(InetAddress inf) throwsSocketException {if(isClosed()) {throw new SocketException("Socket is closed");}checkAddress(inf, "setInterface");synchronized(infLoc…

【轉】Linux終端下 dstat 監控工具

轉自https://linux.cn/article-3215-1.html dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的局限并增加了一些另外的功能,增加了監控項,也變得更靈活了。dstat可以很方便監控系統…

Tomcat和IntelliJ –在webapps文件夾之外部署war文件

目前,我正在開發一個Android應用程序,該應用程序需要云中托管的大量REST服務來支持。 我基于對Java,Groovy以及最重要的Spring的支持選擇了Google App Engine 。 我開發了一個基于Spring MVC的REST應用程序,并使用ContentNegotiat…