linux程序设计使用C语言访问MySQL(第八章)_MySQL
8.3 使用C语言访问MySQL数据
Windows本地程序(如Access)可以通过ODBC驱动程序来访问MySQL,甚至有针对linuxODBC驱动程序。下面讨论使用C语言来访问MySQL.
8.3.1 连接例程
用C语言连接MySQL数据库包含两个步骤:1.初始化一个连接句柄结构
2.实际进行连接
首先,使用mysql_init来初始化连接句柄:
#include
MYSQL *mysql_init(MYSQL *);
通常传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,它将被重新初始化。这个例程出错时返回NULL。
目前为止,只是分配和初始化了一个结构,仍然需要使用mysql_real_connect来向一个连接提供参数:
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags);
指针connection必须指向已经被mysql_init初始化过的结构。其他参数的含义相当明了,server_host既可以是主机名,也可以是IP地址。如果只是连接到本地机器,可以通过指定localhost来优化连接类型。
sql_user_name和sql_password的含义和它们的字面含义一样。如果登录名为NULL,则假设登录名为当前linux用户的登录ID。如果密码是NULL,则只能访问服务器上无需密码就可访问的数据。密码会在通过传输前进行加密。
port_number和unix_socket_name应该分别为0和NULL,除非改变了MYSQL安装的默认设置。
flag参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特征。
如果无法连接,它将返回NULL。mysql_error函数可以提供有帮助的信息。
使用完连接之后,通常在程序退出时,要像下面这样调用函数mysql_close:
void mysql_close(MYSQL *connection);
这将关闭连接,如果连接是由mysql_init建立的,MySQL结构会被释放。指针将会无效并无法再次使用。
mysql_options例程(仅能在mysql_init和mysql_real_connect之间调用)可以设置一些选项:
int mysql_options(MYSQL *connection, enum option_to_set, const char *argument);
因为mysql_options一次只能设置一个选项,所以每设置一个选项就要调用它一次。下面列出了3个最常用的选项:
enum选项 实际参数类型 说明
MySQL_OPT_CONNECT_TIMEOUT const unsigned int * 连接超时之前的等待秒数
MySQL_OPT_COMPRESS None,使用NULL 网络连接中使用压缩机制
MySQL_INIT_COMMAND const char * 每次连接建立后发送的命令
如果要设置连接超时时间为7秒,使用的代码片段如下所示:
unsigned int timeout = 7;
connection = mysql_init(NULL);
ret = mysql_options(connection, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout);
if (ret){
}
connection = mysql_real_connect(connection...)
接下来使用一个简短的程序测试一下。
首先进入rick用户,创建一个数据库foo;
mysql -u rick -p
CREATE DATABASE foo;
如果直接在mysql命令行中输入许多创建表和添加数据的命令,这比较容易出错,而且如果再次输入这些命令的话,也很不高效。因此,创建一个包含所需要命令的文件。
这个文件名为create_children.sql;
\. /绝对路径/create_children.sql 来执行这个文件
一定要使用create_children.sql的绝对路径.
现在有一个用户,一个数据库和一个保存了一些数据的表,接下来看一下如果通过代码来访问这些数据。
编写程序connect1.c,它以用户名rick和密码secret来连接本机服务器上名为foo的数据库。如果出现mysql.h找不到的情况,参见linux找不到mysql.h.
编译这个程序需要同时添加include路径和库文件路径,以及指定链接的库模块mysqlclient.
$ gcc connect1.c -o connect1.exe -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
-I/usr/include/mysql是mysql.h的头文件路径
-L/usr/lib/mysql是库文件路径
8.3.2 错误处理
MySQL使用一系列由连接句柄结构报告的返回码.两个必备的例程是:unsigned int mysql_errno(MYSQL *connection);
char *mysql_error(MYSQL *connection);
可以通过调用mysql_errno并传递连接结构来获得错误码,它通常都是非0值.如果未设定错误码,它将返回0.
mysql_errno的返回值实际上就是错误码,它们在errmsg.h或者mysqld_error.h中定义,前者是报告客户端错误,后者关注服务端错误.mysql_error提供有意义的文本信息,而不是单调的错误码,这些信息被写入一些内部静态内存空间中,如果想保存错误文本,需要把它复制到别的地方.
当调用mysql_real_connect时会遇到一个问题,因为它在失败时返回NULL指针,并没有提供一个错误码.但如果将连接句柄作为一个变量,那么及时mysql_real_connect失败,仍然能够处理它.
编写程序connect2.c,它示例如何使用非动态分配的连接结构,以及如何编写一些基本的错误处理代码.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在同一設定上工作太久或與他人分享PC。您可能會安裝一些語言包,這通常會產生衝突。因此,是時候刪除Windows11中不需要的顯示語言了。說到衝突,當有多個語言包時,無意中按Ctrl+Shift會更改鍵盤佈局。如果不注意,這將是手頭任務的障礙。所以,讓我們直接進入方法吧!如何從Windows11中刪除顯示語言? 1.從設定按+開啟“設定”應用,從導覽窗格中前往“時間和語言”,然後按一下“語言和地區”。 WindowsI點選要刪除的顯示語言旁邊的省略號,然後從彈出式選單中選擇「刪除」。在出現的確認提示中按一下“

眾所周知,iPhone是最人性化的電子產品之一,其中一個原因是它可以輕鬆地根據您的喜好進行個性化設定。在個人化設定中,您可以變更語言,這與您在設定iPhone時選擇的語言不同。如果您對多種語言熟悉,或者您的iPhone語言設定錯誤,您可以按照我們下面解釋的方法進行更改。如何更改iPhone的語言[3種方法]iOS允許使用者在iPhone上自由切換首選語言,以適應不同的需求。您可以更改與Siri的互動語言,方便與語音助理溝通。同時,在使用本機鍵盤時,您可以輕鬆地在多種語言之間切換,提高輸入效率。

影片在當今社群媒體和網路文化中扮演著愈發重要的角色,抖音,快手,B站等已經成為數以億計用戶的熱門平台。用戶圍繞影片分享自己的生活點滴、創意作品、有趣時刻等內容,與他人互動和交流。近期,大語言模型展現了令人矚目的能力。我們能否給大模型裝上“眼睛”和“耳朵”,讓它能夠理解視頻,陪著用戶互動呢?從這個問題出發,達摩院的研究人員提出了Video-LLaMA,一個具有綜合視聽能力大模型。 Video-LLaMA能夠感知和理解視訊中的視訊和音訊訊號,並能理解使用者輸入的指令,完成一系列基於音訊視訊的複雜任務,

有時候我們再剛入手安裝好電腦系統之後發現系統時英文的,遇到這種情況我們就需要把電腦的語言改成中文,那麼win10系統裡面該怎麼把電腦的語言改成中文呢,現在就給大家帶來具體的操作方法。 win10電腦語言怎麼改成中文1、開啟電腦點選左下角的開始按鍵。 2、點選左側的設定選項。 3.開啟的頁面選擇「時間和語言」4、開啟後,再點選左側的「語言」5、在這裡就可以設定你要的電腦語言。

當Alt+Shift不更改Windows11上的語言時,您可以使用Win+空白鍵獲得相同的效果。另外,請確保使用左Alt+Shift而不是鍵盤右側的那些。為什麼Alt+Shift無法更改語言?您沒有更多語言可供選擇。輸入語言熱鍵已變更。最新Windows更新中的錯誤阻止您更改鍵盤語言。卸載最新更新以解決此問題。您處於應用程式的活動視窗中,該應用程式使用相同的熱鍵執行其他操作。你如何使用AltShift更改Windows11上的語言? 1.使用正確的按鍵順序首先,確保您使用的是使用+組合的正確方法。

說到這兩年風靡全球的國產遊戲,原神肯定是當仁不讓。根據5月公佈的本年度Q1季手遊收入調查報告,在抽卡手遊裡《原神》以5.67億美金的絕對優勢穩穩拿下第一,這也宣告《原神》在上線短短18個月後單在手機平台總收入就突破30億美金(約RM130億)。如今,開放須彌前最後的2.8海島版本姍姍來遲,在漫長的長草期後終於又有新的劇情和區域可以肝了。不過我不知道有多少“肝帝”,現在海島已經滿探索,又開始長草了。寶箱總共182個+1個摩拉箱(不計入)長草期根本沒在怕的,原神區從來不缺整活兒。不,在長草期間

基於大模型的持續最佳化,LLM智能體-這些強大的演算法實體已經展現出解決複雜多步驟推理任務的潛力。從自然語言處理到深度學習,LLM智能體正逐漸成為研究和工業界的焦點,它們不僅能理解和生成人類語言,還能在多樣的環境中製定策略、執行任務,甚至使用API調用和編碼來建置解決方案。在這種背景下,AgentQuest框架的提出具有里程碑意義,它不僅僅是一個LLM智能體的評估和進步提供了一個模組化的基準測試平台,而且透過其易於擴展的API,為研究人員提供了一個強大的工具,以更細緻地追蹤和改進這些智能體的性能

一、背景重構工作中,程式碼規格:B端前端開發過程中開發者總會面臨重複開發的痛點,許多CRUD頁面的元素模組基本上相似,但仍需手動開發,將時間花在簡單的元素搭建上,降低了業務需求的開發效率,同時因為不同開發者的程式碼風格不一致,使得迭代時其他人上手成本較高。 AI取代簡單腦力:AI大模型的不斷發展,已經具備簡單的理解能力,並且可以進行語言到指令的轉換。對於基礎頁面建構這樣的通用指令可滿足日常基礎頁面搭建的需求,提升通用場景業務開發效率。二、生成連結一覽B端頁面清單、表單、詳情都支援生成,連結大概可分為以下幾
