Jadual Kandungan
8.3 使用C语言访问MySQL数据
8.3.1 连接例程
8.3.2 错误处理
Rumah pangkalan data tutorial mysql linux程序设计使用C语言访问MySQL(第八章)_MySQL

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

Jun 01, 2016 pm 01:00 PM
Pengaturcaraan bahasa

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,它示例如何使用非动态分配的连接结构,以及如何编写一些基本的错误处理代码.
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Mengalih Keluar sepenuhnya Bahasa Paparan yang Tidak Diingini pada Windows 11 Cara Mengalih Keluar sepenuhnya Bahasa Paparan yang Tidak Diingini pada Windows 11 Sep 24, 2023 pm 04:25 PM

Bekerja pada persediaan yang sama terlalu lama atau kongsi PC anda dengan orang lain. Anda mungkin memasang beberapa pek bahasa, yang sering menimbulkan konflik. Jadi, sudah tiba masanya untuk mengalih keluar bahasa paparan yang tidak diingini dalam Windows 11. Bercakap tentang konflik, apabila terdapat berbilang pek bahasa, secara tidak sengaja menekan Ctrl+Shift mengubah reka letak papan kekunci. Jika tidak diuruskan, ini boleh menjadi penghalang kepada tugas yang sedang dijalankan. Jadi, mari kita beralih terus ke kaedah! Bagaimana untuk mengalih keluar bahasa paparan dari Windows 11? 1. Dari Tetapan tekan + untuk membuka aplikasi Tetapan, pergi ke Masa & Bahasa daripada anak tetingkap navigasi dan klik pada Bahasa & Wilayah. WindowsSaya klik elipsis di sebelah bahasa paparan yang anda mahu alih keluar dan pilih Alih keluar daripada menu timbul. klik "

3 Cara Menukar Bahasa pada iPhone 3 Cara Menukar Bahasa pada iPhone Feb 02, 2024 pm 04:12 PM

Bukan rahsia lagi bahawa iPhone adalah salah satu alat elektronik yang paling mesra pengguna, dan salah satu sebabnya ialah ia boleh diperibadikan dengan mudah mengikut keinginan anda. Dalam Pemperibadian, anda boleh menukar bahasa kepada bahasa yang berbeza daripada bahasa yang anda pilih semasa menyediakan iPhone anda. Jika anda biasa dengan berbilang bahasa, atau tetapan bahasa iPhone anda salah, anda boleh menukarnya seperti yang kami terangkan di bawah. Cara Menukar Bahasa iPhone [3 Kaedah] iOS membenarkan pengguna menukar bahasa pilihan pada iPhone secara bebas untuk menyesuaikan diri dengan keperluan yang berbeza. Anda boleh menukar bahasa interaksi dengan Siri untuk memudahkan komunikasi dengan pembantu suara. Pada masa yang sama, apabila menggunakan papan kekunci tempatan, anda boleh bertukar antara berbilang bahasa dengan mudah untuk meningkatkan kecekapan input.

Menambah keupayaan audio-visual yang komprehensif pada model bahasa yang besar, DAMO Academy membuka sumber Video-LLaMA Menambah keupayaan audio-visual yang komprehensif pada model bahasa yang besar, DAMO Academy membuka sumber Video-LLaMA Jun 09, 2023 pm 09:28 PM

Video memainkan peranan yang semakin penting dalam media sosial dan budaya Internet masa kini Douyin, Kuaishou, Bilibili, dll. telah menjadi platform popular untuk ratusan juta pengguna. Pengguna berkongsi detik hidup mereka, karya kreatif, detik menarik dan kandungan lain di sekitar video untuk berinteraksi dan berkomunikasi dengan orang lain. Baru-baru ini, model bahasa yang besar telah menunjukkan keupayaan yang mengagumkan. Bolehkah kita melengkapkan model besar dengan "mata" dan "telinga" supaya mereka boleh memahami video dan berinteraksi dengan pengguna? Bermula daripada masalah ini, penyelidik dari Akademi DAMO mencadangkan Video-LLaMA, model besar dengan keupayaan audio-visual yang komprehensif. Video-LLaMA boleh melihat dan memahami isyarat video dan audio dalam video, dan boleh memahami arahan input oleh pengguna untuk menyelesaikan satu siri tugasan kompleks berdasarkan audio dan video,

Bagaimana untuk menetapkan bahasa komputer Win10 kepada bahasa Cina? Bagaimana untuk menetapkan bahasa komputer Win10 kepada bahasa Cina? Jan 05, 2024 pm 06:51 PM

Kadang-kadang kita hanya memasang sistem komputer dan mendapati bahawa sistem itu dalam bahasa Inggeris Dalam kes ini, kita perlu menukar bahasa komputer kepada bahasa Cina Jadi bagaimana untuk menukar bahasa komputer ke bahasa Cina dalam sistem win10 . Cara menukar bahasa komputer dalam win10 kepada bahasa Cina 1. Hidupkan komputer dan klik butang mula di sudut kiri bawah. 2. Klik pilihan tetapan di sebelah kiri. 3. Pilih "Masa dan Bahasa" pada halaman yang terbuka 4. Selepas membuka, klik "Bahasa" di sebelah kiri 5. Di sini anda boleh menetapkan bahasa komputer yang anda mahu.

Anda boleh bermain Genshin Impact hanya dengan menggerakkan mulut anda! Gunakan AI untuk menukar watak dan menyerang musuh: 'Ayaka, gunakan Kamiri-ryu Frost Destruction' Anda boleh bermain Genshin Impact hanya dengan menggerakkan mulut anda! Gunakan AI untuk menukar watak dan menyerang musuh: 'Ayaka, gunakan Kamiri-ryu Frost Destruction' May 13, 2023 pm 07:52 PM

Apabila bercakap mengenai permainan domestik yang telah menjadi popular di seluruh dunia sejak dua tahun lalu, Genshin Impact pasti mengambil bahagian dalam kek itu. Menurut laporan tinjauan hasil permainan mudah alih suku pertama tahun ini yang dikeluarkan pada bulan Mei, "Genshin Impact" dengan kukuh memenangi tempat pertama di kalangan permainan mudah alih pengeluaran kad dengan kelebihan mutlak sebanyak 567 juta dolar AS. Ini juga mengumumkan bahawa "Genshin Impact" telah dalam talian hanya dalam tempoh 18 tahun Beberapa bulan kemudian, jumlah pendapatan daripada platform mudah alih sahaja melebihi AS$3 bilion (kira-kira RM13 bilion). Kini, versi pulau 2.8 terakhir sebelum pembukaan Xumi sudah lama tertangguh Selepas tempoh draf yang panjang, akhirnya terdapat plot dan kawasan baharu untuk dimainkan. Tetapi saya tidak tahu berapa banyak "Maharaja Hati" yang ada Sekarang pulau itu telah diterokai sepenuhnya, rumput telah mula tumbuh semula. Terdapat sejumlah 182 peti harta karun + 1 kotak Mora (tidak termasuk). Tidak, semasa rumput panjang

Meneroka sempadan ejen: AgentQuest, rangka kerja penanda aras modular untuk mengukur dan meningkatkan prestasi ejen model bahasa besar secara menyeluruh Meneroka sempadan ejen: AgentQuest, rangka kerja penanda aras modular untuk mengukur dan meningkatkan prestasi ejen model bahasa besar secara menyeluruh Apr 11, 2024 pm 08:52 PM

Berdasarkan pengoptimuman berterusan model besar, ejen LLM - entiti algoritma yang berkuasa ini telah menunjukkan potensi untuk menyelesaikan tugas penaakulan pelbagai langkah yang kompleks. Daripada pemprosesan bahasa semula jadi kepada pembelajaran mendalam, ejen LLM secara beransur-ansur menjadi tumpuan penyelidikan dan industri Mereka bukan sahaja dapat memahami dan menjana bahasa manusia, tetapi juga merumuskan strategi, melaksanakan tugas dalam persekitaran yang pelbagai, dan juga menggunakan panggilan API dan pengekodan untuk Membina. penyelesaian. Dalam konteks ini, pengenalan rangka kerja AgentQuest merupakan satu peristiwa penting Ia bukan sahaja menyediakan platform penanda aras modular untuk penilaian dan kemajuan ejen LLM, tetapi juga menyediakan penyelidik dengan alat yang Berkuasa untuk menjejak dan meningkatkan prestasi ejen ini pada masa yang tertentu. tahap yang lebih berbutir

Bagaimana untuk menukar paparan bahasa kaedah tetapan bahasa sistem vivox60pro vivox60pro Bagaimana untuk menukar paparan bahasa kaedah tetapan bahasa sistem vivox60pro vivox60pro Mar 23, 2024 am 09:06 AM

1. Klik [Pengurusan Sistem] dalam menu tetapan telefon. 2. Klik pilihan [Bahasa]. 3. Pilih bahasa sistem yang anda ingin gunakan.

Pemikiran dan amalan tentang penjanaan bantuan kod bahagian hadapan B-end di bawah model besar Pemikiran dan amalan tentang penjanaan bantuan kod bahagian hadapan B-end di bawah model besar Apr 18, 2024 am 09:30 AM

1. Spesifikasi kod semasa kerja pembinaan semula latar belakang: Semasa proses pembangunan bahagian hadapan B-end, pembangun akan sentiasa menghadapi titik kesakitan pembangunan berulang Modul elemen banyak halaman CRUD pada asasnya serupa, tetapi ia masih perlu dibangunkan secara manual , dan masa dibelanjakan untuk pembinaan elemen mudah Ini mengurangkan kecekapan pembangunan keperluan perniagaan Pada masa yang sama, kerana gaya pengekodan pembangun yang berbeza tidak konsisten, ia menjadikannya lebih mahal untuk orang lain bermula semasa lelaran. AI menggantikan kuasa otak yang mudah: Dengan pembangunan berterusan model AI yang besar, ia mempunyai keupayaan pemahaman yang mudah dan boleh menukar bahasa kepada arahan. Arahan am untuk membina halaman asas boleh memenuhi keperluan pembinaan halaman asas harian dan meningkatkan kecekapan pembangunan perniagaan dalam senario umum. 2. Hasilkan senarai pautan, borang dan butiran halaman sebelah B semua Pautan boleh dibahagikan secara kasar kepada kategori berikut:

See all articles