Topik ini menjelaskan cara menggunakan C API untuk MySQL dalam pengembangan aplikasi C atau C++.
Prasyarat
Fitur kompatibilitas MySQL telah diaktifkan untuk instans Anda. Untuk informasi selengkapnya, lihat Aktifkan fitur kompatibilitas MySQL.
Alamat IP klien Anda telah ditambahkan ke daftar putih instans Lindorm Anda. Untuk informasi selengkapnya, lihat Konfigurasikan daftar putih.
Prosedur
Instal dependensi C API untuk MySQL. Perintah berikut merupakan contoh instalasi dependensi C API untuk MySQL pada CentOS:
Konfigurasikan parameter koneksi.
char lindorm_addr[] = "ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"; char lindorm_user[] = "user"; char lindorm_password[] = "test"; char database[] = "default"; int lindorm_mysql_port = 33060;Parameter
Parameter
Deskripsi
lindorm_addr
Titik akhir LindormTable untuk MySQL. Untuk informasi selengkapnya tentang cara memperolehnya, lihat Lihat titik akhir.
PentingJika aplikasi Anda dideploy pada Instance ECS, kami menyarankan Anda menggunakan VPC untuk menghubungkan ke instans Lindorm guna memastikan keamanan lebih tinggi dan latensi jaringan lebih rendah.
Jika aplikasi Anda dideploy secara on-premises, aktifkan akses jaringan publik di Konsol sebelum menghubungkan ke instans Lindorm melalui jaringan publik. Untuk melakukannya, di Konsol, pilih . Pada tab Wide Table Engine, klik Enable Public Endpoint.
Untuk mengakses instans Lindorm dari virtual private cloud (VPC), atur lindorm_addr ke alamat VPC yang kompatibel dengan MySQL. Untuk mengakses instans Lindorm dari jaringan publik, atur lindorm_addr ke alamat Internet yang kompatibel dengan MySQL.
lindorm_user
Jika Anda lupa password, Anda dapat mengganti password tersebut di sistem manajemen kluster LindormTable. Untuk informasi selengkapnya, lihat Kelola pengguna.
lindorm_password
database
Nama database yang ingin Anda hubungkan. Secara default, client Anda terhubung ke database bernama default.
lindorm_mysql_port
Port yang digunakan untuk mengakses LindormTable menggunakan MySQL. Nilai parameter ini tetap 33060.
Anda dapat membuat koneksi ke LindormTable untuk menggunakan sintaks SQL tabel lebar. Contoh berikut menunjukkan cara membuat tabel.
// Buat koneksi. if (!mysql_real_connect(&conn,lindorm_addr,lindorm_user,lindorm_password,database,lindorm_mysql_port,NULL,0)) { printf("Gagal terhubung ke database: Error: %s\n", mysql_error(&conn)); exit(1); } else { printf("berhasil terhubung ke lindorm\n"); } // Buat tabel. char create_table[] = "create table if not exists user_test(id int, name varchar,age int, primary key(id))"; res = mysql_query(&conn, create_table); if (!res) { printf("tabel berhasil dibuat\n"); } else { printf("Error saat membuat tabel: %s\n", mysql_error(&conn)); exit(1); }Untuk mengompilasi kode dalam file
demo.c, jalankan perintah berikut.gcc -o a.out $(mysql_config --cflags) demo.c $(mysql_config --libs) ./a.out
yum install mysql-develContoh lengkap
Berikut adalah kode contoh lengkap:
#include <stdio.h>
#include "mysql/mysql.h"
int main(){
MYSQL conn;
int res;
MYSQL_RES * result;
MYSQL_ROW row;
mysql_init(&conn);
// Konfigurasi koneksi.
char lindorm_addr[] = "ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"; // Titik akhir LindormTable untuk MySQL
char lindorm_user[] = "user"; // Username untuk LindormTable
char lindorm_password[] = "test"; // Password untuk LindormTable
char database[] = "default"; // Nama database yang akan dihubungkan
int lindorm_mysql_port = 33060; // Port protokol MySQL untuk LindormTable (tetap 33060)
// Buat koneksi.
if (!mysql_real_connect(&conn,lindorm_addr,lindorm_user,lindorm_password,database,lindorm_mysql_port,NULL,0)) {
printf("Gagal terhubung ke database: Error: %s\n",
mysql_error(&conn));
exit(1);
} else {
printf("conect lindorm successfully\n");
}
// Buat tabel.
char create_table[] = "create table if not exists user_test(id int, name varchar,age int, primary key(id))";
res = mysql_query(&conn, create_table);
if (!res) {
printf("create table successfully\n");
} else {
printf("create table Error: %s\n", mysql_error(&conn));
exit(1);
}
// Masukkan data.
char insert_data[] = "upsert into user_test(id,name,age) values(3,'wangwu',23)";
res = mysql_query(&conn, insert_data);
if (!res) {
printf("insert data successfully\n");
} else {
printf("insert data Error: %s\n", mysql_error(&conn));
exit(1);
}
// Kueri data.
char select_query[] = "select * from user_test";
if (mysql_query(&conn, select_query) != 0) {
printf("select Error: %s\n", mysql_error(&conn));
exit(1);
} else {
if ((result = mysql_store_result(&conn)) == NULL) {
printf("store result Error: %s\n", mysql_error(&conn));
exit(1);
}
else {
while ((row = mysql_fetch_row(result)) != NULL) {
printf("name is %s , ", row[0]);
printf("age is %s\n", row[1]);
}
}
}
return 0;
}Hasil berikut dikembalikan:
conect lindorm successfully
create table successfully
insert data successfully
name is 3 , age is wangwu