Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart leest u hoe u op Windows-, Ubuntu Linux- en Apple macOS-platforms verbinding maakt met Azure Database for MySQL met behulp van code geschreven in de taal Go. U ziet hier hoe u SQL-instructies gebruikt om gegevens in de database op te vragen, in te voegen, bij te werken en te verwijderen. In dit artikel wordt ervan uitgegaan dat u bekend bent met het ontwikkelen met behulp van Go, maar geen ervaring hebt met het werken met Azure Database for MySQL.
Vereisten
In deze snelstartgids worden de resources die in een van deze handleidingen zijn gemaakt, als uitgangspunt gebruikt:
- Quickstart: Een exemplaar van Azure Database for MySQL maken met Azure Portal
- Quickstart: Een exemplaar van Azure Database for MySQL - Flexible Server maken met behulp van de Azure CLI
Belangrijk
U wordt aangeraden een server te gebruiken waarvoor openbare toegang (toegestane IP-adressen) is ingeschakeld voor deze quickstart. Het gebruik van een server met privétoegang (VNet-integratie) die is ingeschakeld om deze quickstart te voltooien, kan extra stappen omvatten die niet worden behandeld.
Zorg ervoor dat het IP-adres waarmee u verbinding maakt, is toegevoegd aan de firewallregels van de server met behulp van de firewallregels beheren voor Azure Database for MySQL - Flexible Server met behulp van De Azure-portal of firewallregels beheren voor Azure Database for MySQL - Flexible Server met behulp van Azure CLI
Go en de MySQL-connector installeren
Installeer Go en het Go-SQL-stuurprogramma voor MySQL op uw computer. Volg afhankelijk van uw platform de volgende stappen uit in de toepasselijke sectie:
Download en installeer Go voor Microsoft Windows volgens de installatie-instructies.
Open de opdrachtprompt vanuit het Startmenu.
Maak een map voor uw project, bijvoorbeeld
mkdir %USERPROFILE%\go\src\mysqlgo
.Wijzig de map in de projectmap, bijvoorbeeld
cd %USERPROFILE%\go\src\mysqlgo
.Stel de omgevingsvariabele voor GOPATH in zodat deze verwijst naar de broncodemap:
set GOPATH=%USERPROFILE%\go
.Voer go mod init uit om een module te maken in de huidige map. Voorbeeld:
go mod init mysqlgo
.- De
<module_path>
parameter is over het algemeen een locatie in een GitHub-opslagplaats, zoalsgithub.com/<your_github_account_name>/<directory>
. - Wanneer u een opdrachtregel-app maakt als test en de app niet publiceert, hoeft deze
<module_path>
niet naar een werkelijke locatie te verwijzen. Bijvoorbeeld:mysqlgo
.
- De
Installeer het Go-SQL-stuurprogramma voor MySQL door de opdracht
go get github.com/go-sql-driver/mysql
uit te voeren.Kortom: installeer Go en voer vervolgens deze opdrachten uit in de opdrachtprompt:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go mod init mysqlgo go get github.com/go-sql-driver/mysql
Verbindingsgegevens ophalen
Haal de verbindingsgegevens op die nodig zijn om verbinding te maken met de Azure Database voor MySQL. U hebt de volledig gekwalificeerde servernaam en aanmeldingsreferenties nodig.
- Meld u aan bij Azure Portal.
- Selecteer in het menu aan de linkerkant in de Azure-portal Alle resources en zoek naar de server die u hebt gemaakt (bijvoorbeeld mydemoserver).
- Selecteer de servernaam.
- Ga naar het venster Overzicht van de server en noteer de Servernaam en de Aanmeldingsnaam van de serverbeheerder. Als u uw wachtwoord vergeet, kunt u het wachtwoord in dit venster opnieuw instellen.
Go-code schrijven en uitvoeren
- Als u Golang-code wilt schrijven, gebruikt u een eenvoudige teksteditor zoals Kladblok in Microsoft Windows, vi of Nano in Ubuntu en TextEdit in macOS. Als u liever een uitgebreidere Interactive Development Environment (IDE) gebruikt, gaat u aan de slag met Gogland van Jetbrains, Visual Studio Code van Microsoft of Atom.
- Plak de Go-code uit de onderstaande secties in tekstbestanden en sla deze vervolgens op in de projectmap met de bestandsextensie *.go (zoals Windows-pad
%USERPROFILE%\go\src\mysqlgo\createtable.go
of Linux-pad~/go/src/mysqlgo/createtable.go
). - Zoek de constanten
host
,database
,user
enpassword
in de code en vervang de voorbeeldwaarden door uw eigen waarden. Er wordt een database met de naam flexibleserverdb gemaakt wanneer u uw Azure Database for MySQL-serverexemplaren maakt. U kunt die database of een andere database gebruiken die u hebt gemaakt. - Open de opdrachtprompt of de Bash-shell. Wijzig de map in de projectmap. Voorbeeld voor Windows:
cd %USERPROFILE%\go\src\mysqlgo\
. Voorbeeld voor Linux:cd ~/go/src/mysqlgo/
. Sommige van de vermelde IDE-editors bieden mogelijkheden voor foutopsporing en runtime zonder dat daarvoor shell-opdrachten zijn vereist. - Voer de code uit door de opdracht
go run createtable.go
te typen. De toepassing wordt nu gecompileerd en uitgevoerd. - Als u de code wilt bouwen in een systeemeigen toepassing, kunt u ook
go build createtable.go
gebruiken en vervolgenscreatetable.exe
starten om de toepassing uit te voeren.
Verbinden, tabel maken en gegevens invoegen
Gebruik de volgende code om verbinding te maken met de server, een tabel te maken en de gegevens te laden met behulp van de SQL-instructie INSERT.
Met de code worden drie pakketten geïmporteerd: het SQL-pakket, het GO-SQL-stuurprogramma voor MySQL (als stuurprogramma voor de communicatie met de Azure-database voor MySQL) en het fmt-pakket (voor de weergave van invoer en uitvoer op de opdrachtregel).
In de code wordt de methode sql.Open() aangeroepen om verbinding te maken met Azure Database for MySQL. Vervolgens wordt de verbinding gecontroleerd met de methode db.Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. In de code wordt de methode Exec() meerdere keren aangeroepen om diverse DDL-opdrachten uit te voeren. De code maakt ook gebruik van Prepare() en Exec() om voorbereide instructies uit te voeren met verschillende parameters, zodat er drie rijen worden ingevoegd. Telkens wordt er een aangepaste checkError()-methode gebruikt om te controleren of er fouten zijn opgetreden en af te sluiten als dit het geval is.
Vervang de constanten host
, database
, user
en password
door uw eigen waarden.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Drop previous table of same name if one exists.
_, err = db.Exec("DROP TABLE IF EXISTS inventory;")
checkError(err)
fmt.Println("Finished dropping table (if existed).")
// Create table.
_, err = db.Exec("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
checkError(err)
fmt.Println("Finished creating table.")
// Insert some data into table.
sqlStatement, err := db.Prepare("INSERT INTO inventory (name, quantity) VALUES (?, ?);")
res, err := sqlStatement.Exec("banana", 150)
checkError(err)
rowCount, err := res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("orange", 154)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("apple", 100)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Gegevens lezen
Gebruik de volgende code om verbinding te maken en de gegevens te lezen met behulp van de SQL-instructie SELECT.
Met de code worden drie pakketten geïmporteerd: het SQL-pakket, het GO-SQL-stuurprogramma voor MySQL (als stuurprogramma voor de communicatie met de Azure-database voor MySQL) en het fmt-pakket (voor de weergave van invoer en uitvoer op de opdrachtregel).
In de code wordt de methode sql.Open() aangeroepen om verbinding te maken met de Azure-database voor MySQL. Vervolgens wordt de verbinding gecontroleerd met de methode db.Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Query()-methode aan om de geselecteerde opdracht uit te voeren. Vervolgens wordt Next() uitgevoerd om de resultatenset te doorlopen en Scan() om de kolomwaarden te parseren, waarbij deze worden opgeslagen in de vorm van variabelen. Telkens wordt er een aangepaste checkError()-methode gebruikt om te controleren of er fouten zijn opgetreden en af te sluiten als dit het geval is.
Vervang de constanten host
, database
, user
en password
door uw eigen waarden.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Variables for printing column data when scanned.
var (
id int
name string
quantity int
)
// Read some data from the table.
rows, err := db.Query("SELECT id, name, quantity from inventory;")
checkError(err)
defer rows.Close()
fmt.Println("Reading data:")
for rows.Next() {
err := rows.Scan(&id, &name, &quantity)
checkError(err)
fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
}
err = rows.Err()
checkError(err)
fmt.Println("Done.")
}
Gegevens bijwerken
Gebruik de volgende code om verbinding te maken en de gegevens bij te werken met de SQL-instructie UPDATE.
Met de code worden drie pakketten geïmporteerd: het SQL-pakket, het GO-SQL-stuurprogramma voor MySQL (als stuurprogramma voor de communicatie met de Azure-database voor MySQL) en het fmt-pakket (voor de weergave van invoer en uitvoer op de opdrachtregel).
In de code wordt de methode sql.Open() aangeroepen om verbinding te maken met de Azure-database voor MySQL. Vervolgens wordt de verbinding gecontroleerd met de methode db.Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Exec()-methode aan om de opdracht Bijwerken uit te voeren. Telkens wordt er een aangepaste checkError()-methode gebruikt om te controleren of er fouten zijn opgetreden en af te sluiten als dit het geval is.
Vervang de constanten host
, database
, user
en password
door uw eigen waarden.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("UPDATE inventory SET quantity = ? WHERE name = ?", 200, "banana")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Updated %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Gegevens verwijderen
Gebruik de volgende code om verbinding te maken en de gegevens te verwijderen met de SQL-instructie DELETE.
Met de code worden drie pakketten geïmporteerd: het SQL-pakket, het GO-SQL-stuurprogramma voor MySQL (als stuurprogramma voor de communicatie met de Azure-database voor MySQL) en het fmt-pakket (voor de weergave van invoer en uitvoer op de opdrachtregel).
In de code wordt de methode sql.Open() aangeroepen om verbinding te maken met de Azure-database voor MySQL. Vervolgens wordt de verbinding gecontroleerd met de methode db.Ping(). Er wordt telkens gebruikgemaakt van een database-ingang, die de verbindingsgroep voor de databaseserver bevat. De code roept de Exec()-methode aan om de opdracht Verwijderen uit te voeren. Telkens wordt er een aangepaste checkError()-methode gebruikt om te controleren of er fouten zijn opgetreden en af te sluiten als dit het geval is.
Vervang de constanten host
, database
, user
en password
door uw eigen waarden.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("DELETE FROM inventory WHERE name = ?", "orange")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Deleted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Resources opschonen
Als u alle resources wilt opschonen die tijdens deze quickstart zijn gebruikt, verwijdert u de resourcegroep. Dit kan met de volgende opdracht:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes