目次
8.3 使用C语言访问MySQL数据
8.3.1 连接例程
8.3.2 错误处理
ホームページ データベース mysql チュートリアル linux程序设计使用C语言访问MySQL(第八章)_MySQL

linux程序设计使用C语言访问MySQL(第八章)_MySQL

Jun 01, 2016 pm 01:00 PM
プログラミング 言語

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,它示例如何使用非动态分配的连接结构,以及如何编写一些基本的错误处理代码.
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11で不要な表示言語を完全に削除する方法 Windows 11で不要な表示言語を完全に削除する方法 Sep 24, 2023 pm 04:25 PM

同じセットアップで長時間作業したり、PC を他の人と共有したりします。いくつかの言語パックがインストールされている可能性があり、競合が発生することがよくあります。そこで、Windows 11 で不要な表示言語を削除しましょう。競合といえば、複数の言語パックがある場合、誤って Ctrl+Shift を押すとキーボード レイアウトが変更されてしまいます。これに注意しないと、当面の作業に支障をきたす可能性があります。それでは、早速メソッドの説明に入りましょう。 Windows 11 から表示言語を削除するにはどうすればよいですか? 1. [設定] から [+] を押して設定アプリを開き、ナビゲーション ペインから [時刻と言語] に移動して、[言語と地域] をクリックします。 Windows 削除する表示言語の横にある省略記号をクリックし、ポップアップ メニューから [削除] を選択します。クリック "

iPhoneで言語を変更する3つの方法 iPhoneで言語を変更する3つの方法 Feb 02, 2024 pm 04:12 PM

iPhone が最も使いやすい電子機器の 1 つであることは周知の事実であり、その理由の 1 つは、自分好みに簡単にカスタマイズできることです。個人設定では、iPhone のセットアップ時に選択した言語とは別の言語に変更できます。複数の言語に精通している場合、または iPhone の言語設定が間違っている場合は、以下で説明するように変更できます。 iPhoneの言語を変更する方法[3つの方法] iOSでは、ユーザーはさまざまなニーズに合わせてiPhoneの優先言語を自由に切り替えることができます。 Siri との対話言語を変更して、音声アシスタントとのコミュニケーションを容易にすることができます。同時に、ローカルキーボードを使用する場合、複数の言語を簡単に切り替えることができ、入力効率が向上します。

大規模な言語モデルに包括的なオーディオビジュアル機能を追加し、DAMO アカデミーがソース Video-LLaMA をオープンします 大規模な言語モデルに包括的なオーディオビジュアル機能を追加し、DAMO アカデミーがソース Video-LLaMA をオープンします Jun 09, 2023 pm 09:28 PM

今日のソーシャル メディアやインターネット文化においてビデオの役割はますます重要になっており、Douyin、Kuaishou、Bilibili などは数億人のユーザーに人気のプラットフォームとなっています。ユーザーは、自分の人生の瞬間、創造的な作品、興味深い瞬間、その他のビデオを中心としたコンテンツを共有して、他のユーザーと交流し、コミュニケーションを図ります。最近、大規模な言語モデルが優れた機能を実証しました。大型モデルに「目」と「耳」を持たせて、動画を理解してユーザーと対話できるようにすることはできないだろうか。この問題から出発して、DAMO アカデミーの研究者は、包括的なオーディオビジュアル機能を備えた大規模モデルである Video-LLaMA を提案しました。 Video-LLaMA は、ビデオ内のビデオ信号とオーディオ信号を認識して理解することができ、ユーザーが入力した指示を理解して、オーディオとビデオに基づいた一連の複雑なタスクを完了できます。

Win10コンピュータの言語を中国語に設定するにはどうすればよいですか? Win10コンピュータの言語を中国語に設定するにはどうすればよいですか? Jan 05, 2024 pm 06:51 PM

コンピュータ システムをインストールしただけで、システムが英語になっている場合があります。この場合、コンピュータの言語を中国語に変更する必要があります。それでは、win10 システムでコンピュータの言語を中国語に変更するにはどうすればよいでしょうか?具体的な操作方法を説明します。 。 win10 でコンピューターの言語を中国語に変更する方法 1. コンピューターの電源を入れ、左下隅にあるスタート ボタンをクリックします。 2. 左側の設定オプションをクリックします。 3. 開いたページで「時刻と言語」を選択します 4. 開いたら、左側の「言語」をクリックします 5. ここで、希望するコンピューター言語を設定できます。

口を動かすだけで原神がプレイできる! AIを使ってキャラクターを切り替えて敵を攻撃するネチズン「アヤカ、神里流フロストデストラクションを使って」 口を動かすだけで原神がプレイできる! AIを使ってキャラクターを切り替えて敵を攻撃するネチズン「アヤカ、神里流フロストデストラクションを使って」 May 13, 2023 pm 07:52 PM

過去 2 年間で世界中で人気を博した国産ゲームといえば、間違いなく原神が挙げられます。 5月に発表された今年第1四半期のモバイルゲーム収益調査報告書によると、「原神」が5億6,700万ドルの絶対的な優位性を獲得し、カードを引くモバイルゲームの中で断然1位を獲得したことも発表された。わずか 18 年でオンライン化され、数か月後、モバイル プラットフォームだけでの総収益は 30 億米ドル (約 130 億リンギット) を超えました。さて、Xumi オープン前の最後の 2.8 アイランド バージョンは長い間待ち望まれており、長いドラフト期間を経て、ようやく新しいプロットとプレイできるエリアが登場しました。でも、「肝臓皇帝」が何人いるのかは分かりませんが、島の探索が完了し、また草が生え始めました。宝箱は合計 182 個 + モラボックス 1 個 (含まれていません) 草期間が長くても心配する必要はありません。いや、長い草のあいだに

エージェントの境界の探索: 大規模な言語モデル エージェントのパフォーマンスを包括的に測定および改善するためのモジュール式ベンチマーク フレームワークである AgentQuest エージェントの境界の探索: 大規模な言語モデル エージェントのパフォーマンスを包括的に測定および改善するためのモジュール式ベンチマーク フレームワークである AgentQuest Apr 11, 2024 pm 08:52 PM

大規模モデルの継続的な最適化に基づいて、LLM エージェント - これらの強力なアルゴリズム エンティティは、複雑な複数ステップの推論タスクを解決する可能性を示しています。自然言語処理から深層学習に至るまで、LLM エージェントは徐々に研究や業界の焦点になりつつあります。LLM エージェントは、人間の言語を理解して生成するだけでなく、戦略を策定し、多様な環境でタスクを実行し、API 呼び出しやコーディングを使用して構築することもできます。ソリューション。この文脈において、AgentQuest フレームワークの導入はマイルストーンであり、LLM エージェントの評価と進歩のためのモジュール式ベンチマーク プラットフォームを提供するだけでなく、研究者にこれらのエージェントのパフォーマンスを追跡および改善するための強力なツールも提供します。より細かいレベル

GPT4ALL: 究極のオープンソース大規模言語モデル ソリューション GPT4ALL: 究極のオープンソース大規模言語モデル ソリューション May 17, 2023 am 11:02 AM

研究や商業目的で言語アプリケーションを作成するための包括的なリソースを個人に提供するオープンソース言語モデルのエコシステムが出現しています。この記事では、GPT4ALL について詳しく説明します。GPT4ALL は、ChatGPT のようなチャットボットを誰でも開発できるようにする包括的なビルディング ブロックを提供することで、特定の使用例を超えています。 GPT4ALL プロジェクトとは何ですか? GPT4ALL は、最先端のオープンソースの大規模言語モデルを使用するために必要なものをすべて提供します。オープンソースのモデルとデータセットにアクセスし、提供されたコードを使用してそれらをトレーニングおよび実行し、Web インターフェイスまたはデスクトップ アプリケーションを使用してそれらを操作し、分散コンピューティングのために Langchain バックエンドに接続し、簡単に統合するために Python API を使用できます。

vivox60proの言語表示を変更する方法 vivox60proのシステム言語設定方法 vivox60proの言語表示を変更する方法 vivox60proのシステム言語設定方法 Mar 23, 2024 am 09:06 AM

1. 電話機設定メニューの[システム管理]をクリックします。 2. [言語]オプションをクリックします。 3. 使用するシステム言語を選択します。

See all articles