Mulai cepat: Menggunakan Konektor/C++ untuk menghubungkan dan mengkueri data di Azure Database for MySQL
BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal
Penting
Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?
Mulai cepat ini mendemonstrasikan cara terhubung ke Azure Database for MySQL dengan menggunakan aplikasi C++. Ini menunjukkan cara menggunakan pernyataan SQL untuk mengkueri, menyisipkan, memperbarui, dan menghapus data dalam database. Topik ini mengasumsikan bahwa Anda familier dengan pengembangan menggunakan C++ dan Anda baru menggunakan Azure Database for MySQL.
Prasyarat
Mulai cepat ini menggunakan sumber daya yang dibuat di salah satu panduan berikut ini sebagai titik awal:
- Membuat server Azure Database for MySQL menggunakan portal Azure
- Membuat server Azure Database for MySQL menggunakan Azure CLI
Anda juga perlu:
- Menginstal .NET Framework
- Pasang Visual Studio
- Menginstal Konektor MySQL/C++
- Menginstal Boost
Penting
Pastikan aturan firewall server telah ditambahkan ke alamat IP tempat Anda dihubungkan menggunakan portal Microsoft Azure atau Azure CLI
Menginstal Visual Studio and .NET
Langkah-langkah di bagian ini mengasumsikan bahwa Anda familier dengan pengembangan menggunakan .NET.
Windows
- Menginstal Komunitas Visual Studio 2019. Komunitas Visual Studio 2019 adalah IDE dengan fitur lengkap, dapat diperluas, dan gratis. Dengan IDE ini, Anda dapat membuat aplikasi modern untuk aplikasi Android, iOS, Windows, web dan database, dan layanan cloud. Anda dapat menginstal .NET Framework lengkap atau hanya .NET Core: cuplikan kode di Mulai cepat berfungsi untuk keduanya. Jika Anda sudah menginstal Visual Studio di komputer, lompati dua langkah berikutnya.
- Unduh Penginstal Visual Studio 2019.
- Jalankan penginstal dan ikuti perintah instalasi untuk menyelesaikan instalasi.
Mengonfigurasi Visual Studio
- Dari Visual Studio, Project -> Properties -> Linker -> General > Direktori Pustaka Tambahan, tambahkan direktori "\lib\opt" (misalnya: C:\Program Files (x86)\MySQL \MySQL Connector C++ 1.1.9\lib\opt) dari konektor C++.
- Dari Visual Studio, Project -> Properties -> C/C++ -> Umum -> Tambahan Sertakan Direktori:
- Tambahkan direktori "\include" konektor c++ (misalnya: C:\Program Files (x86)\MySQL\MySQL Connector C++ 1.1.9\include).
- Tambahkan direktori akar pustaka Boost (misalnya: C:\boost_1_64_0).
- Dari Visual Studio, Proyek -> Properti -> Penaut -> Masukkan > Dependensi Tambahan, tambahkan mysqlcppconn.lib ke dalam bidang teks.
- Salin mysqlcppconn.dll dari folder pustaka konektor C++ di langkah 3 ke direktori yang sama dengan aplikasi yang dapat dieksekusi atau tambahkan ke variabel lingkungan sehingga aplikasi Anda dapat menemukannya.
Mendapatkan informasi koneksi
Dapatkan informasi koneksi yang diperlukan untuk terhubung ke Azure Database for MySQL. Anda memerlukan nama server dan kredensial untuk masuk yang sepenuhnya memenuhi syarat.
- Masuk ke portal Azure.
- Pada menu sebelah kiri di portal Microsoft Azure, klik Semua sumber daya, lalu cari server yang telah Anda buat (seperti mydemoserver).
- Klik di nama server.
- Dari panel server Gambaran Umum, buat catatan Nama server dan Nama untuk masuk admin server. Jika lupa kata sandi, Anda juga dapat mengatur ulang kata sandi dari panel ini.
Menyambungkan, membuat tabel, dan menyisipkan data
Gunakan kode berikut untuk menghubungkan dan memuat data dengan menggunakan pernyataan SQL CREATE TABLE dan INSERT INTO. Kode ini menggunakan kelas sql::Driver dengan metode connect() untuk mendirikan koneksi ke MySQL. Kemudian kode menggunakan metode createStatement() dan execute() untuk menjalankan perintah database.
Ganti parameter Host, DBName, Pengguna, dan Kata Sandi. Anda dapat mengganti parameter dengan nilai yang Anda tentukan saat membuat server dan database.
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/prepared_statement.h>
using namespace std;
//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";
int main()
{
sql::Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
sql::PreparedStatement *pstmt;
try
{
driver = get_driver_instance();
con = driver->connect(server, username, password);
}
catch (sql::SQLException e)
{
cout << "Could not connect to server. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
//please create database "quickstartdb" ahead of time
con->setSchema("quickstartdb");
stmt = con->createStatement();
stmt->execute("DROP TABLE IF EXISTS inventory");
cout << "Finished dropping table (if existed)" << endl;
stmt->execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);");
cout << "Finished creating table" << endl;
delete stmt;
pstmt = con->prepareStatement("INSERT INTO inventory(name, quantity) VALUES(?,?)");
pstmt->setString(1, "banana");
pstmt->setInt(2, 150);
pstmt->execute();
cout << "One row inserted." << endl;
pstmt->setString(1, "orange");
pstmt->setInt(2, 154);
pstmt->execute();
cout << "One row inserted." << endl;
pstmt->setString(1, "apple");
pstmt->setInt(2, 100);
pstmt->execute();
cout << "One row inserted." << endl;
delete pstmt;
delete con;
system("pause");
return 0;
}
Membaca data
Gunakan kode berikut untuk menyambungkan dan membaca data menggunakan pernyataan SQL SELECT. Kode ini menggunakan kelas sql::Driver dengan metode connect() untuk mendirikan koneksi ke MySQL. Kemudian kode menggunakan metode prepareStatement() dan executeQuery() untuk menjalankan perintah pilih. Selanjutnya, kode menggunakan next() untuk melaju ke rekaman dalam hasil. Kemudian kode ini menggunakan getInt() dan getString() untuk mengurai nilai dalam rekaman.
Ganti parameter Host, DBName, Pengguna, dan Kata Sandi. Anda dapat mengganti parameter dengan nilai yang Anda tentukan saat membuat server dan database.
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;
//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";
int main()
{
sql::Driver *driver;
sql::Connection *con;
sql::PreparedStatement *pstmt;
sql::ResultSet *result;
try
{
driver = get_driver_instance();
//for demonstration only. never save password in the code!
con = driver->connect(server, username, password);
}
catch (sql::SQLException e)
{
cout << "Could not connect to server. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
con->setSchema("quickstartdb");
//select
pstmt = con->prepareStatement("SELECT * FROM inventory;");
result = pstmt->executeQuery();
while (result->next())
printf("Reading from table=(%d, %s, %d)\n", result->getInt(1), result->getString(2).c_str(), result->getInt(3));
delete result;
delete pstmt;
delete con;
system("pause");
return 0;
}
Memperbarui data
Gunakan kode berikut untuk menyambungkan dan membaca data dengan menggunakan pernyataan SQL UPDATE. Kode ini menggunakan kelas sql::Driver dengan metode connect() untuk mendirikan koneksi ke MySQL. Kemudian kode menggunakan metode prepareStatement() dan executeQuery() untuk menjalankan perintah perbarui.
Ganti parameter Host, DBName, Pengguna, dan Kata Sandi. Anda dapat mengganti parameter dengan nilai yang Anda tentukan saat membuat server dan database.
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;
//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";
int main()
{
sql::Driver *driver;
sql::Connection *con;
sql::PreparedStatement *pstmt;
try
{
driver = get_driver_instance();
//for demonstration only. never save password in the code!
con = driver->connect(server, username, password);
}
catch (sql::SQLException e)
{
cout << "Could not connect to server. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
con->setSchema("quickstartdb");
//update
pstmt = con->prepareStatement("UPDATE inventory SET quantity = ? WHERE name = ?");
pstmt->setInt(1, 200);
pstmt->setString(2, "banana");
pstmt->executeQuery();
printf("Row updated\n");
delete con;
delete pstmt;
system("pause");
return 0;
}
Menghapus data
Gunakan kode berikut untuk menghubungkan dan membaca data menggunakan pernyataan SQL DELETE. Kode ini menggunakan kelas sql::Driver dengan metode connect() untuk mendirikan koneksi ke MySQL. Kemudian kode menggunakan metode prepareStatement() dan executeQuery() untuk menjalankan perintah hapus.
Ganti parameter Host, DBName, Pengguna, dan Kata Sandi. Anda dapat mengganti parameter dengan nilai yang Anda tentukan saat membuat server dan database.
#include <stdlib.h>
#include <iostream>
#include "stdafx.h"
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/prepared_statement.h>
using namespace std;
//for demonstration only. never save your password in the code!
const string server = "tcp://yourservername.mysql.database.azure.com:3306";
const string username = "username@servername";
const string password = "yourpassword";
int main()
{
sql::Driver *driver;
sql::Connection *con;
sql::PreparedStatement *pstmt;
sql::ResultSet *result;
try
{
driver = get_driver_instance();
//for demonstration only. never save password in the code!
con = driver->connect(server, username, password);
}
catch (sql::SQLException e)
{
cout << "Could not connect to server. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
con->setSchema("quickstartdb");
//delete
pstmt = con->prepareStatement("DELETE FROM inventory WHERE name = ?");
pstmt->setString(1, "orange");
result = pstmt->executeQuery();
printf("Row deleted\n");
delete pstmt;
delete con;
delete result;
system("pause");
return 0;
}
Membersihkan sumber daya
Untuk membersihkan semua sumber daya yang digunakan selama mulai cepat ini, hapus grup sumber daya menggunakan perintah berikut:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes