MYSQL, bir ilişkisel veritabanı yönetim sistemidir. MySQL yönetimi için kullanacağımız kütüphanenin adı Go-MySQL-Driver. Kütüphanemizi aşağıdaki gibi komut satırına yazarak indirelim.
go get -u github.com/go-sql-driver/mysql
MySQL paketlerimizi import edelim.
import"database/sql"import_"go-sql-driver/mysql"
MySQL Bağlantısını Yapma
Daha sonra main() fonksiyonumuz içerisinde MySQL bağlantımızı yapalım.
db adındaki fonksiyonel değişkenimize MySQL veritabanı bağlantı bilgilerimizi girdik. kullanici yeri MySQL kullanıcı adınızı, sifre yerine MySQL şifrenizi, 127.0.0.1:3306 yerine MySQL sunucunuzu e vtismi yerine de Veritabanı isminizi yazmayı unutmayın.
Daha sonra veritabanı bağlantı bilgilerimizi doğrulanmak için db.Ping() fonksiyonu ile bağlantı denemesi yolluyoruz. Bir hata ile karşılaşıldığında err değişkeninin içine hata çıktısını kaydedecektir.
Kolaylık olsun diye main() fonksiyonu dışına hata çıktılarını kontrol eden bir fonksiyon yazalım.
CREATE TABLE kullanicilar (
id INT AUTO_INCREMENT,
kullanici TEXT NOT NULL,
sifre TEXT NOT NULL,
tarih DATETIME,
PRIMARY KEY (id)
);
sorgu := `
CREATE TABLE kullanicilar (
id INT AUTO_INCREMENT,
kullanici TEXT NOT NULL,
şifre TEXT NOT NULL,
tarih DATETIME,
PRIMARY KEY (id)
);`
//Sorguyu çalıştırma
_, err := db.Exec(sorgu)
//Tabloyu sorgulayıp sonuçları değişkenlere yazdıralım
sorgu:= `SELECT id, kullanici, sifre, tarih FROM kullanicilar WHERE id = ?`
err := db.QueryRow(sorgu, sorguid).Scan(&id, &kullanici, &sifre, &tarih)
//Çıkan aldığımız verileri ekrana bastıralım
fmt.Println(id, kulanici, sifre, tarih)
var (
id int
kullanici string
sifre string
tarih time.Time
)
tablo, _ := db.Query(`SELECT id, kullanici, sifre, tarih FROM kullanicilar`)
defer tablo.Close() //tabloyu kapamayı unutmuyoruz
for tablo.Next() {
err := tablo.Scan(&id, &kullanici, &sifre, &tarih)
kontrol(err)
fmt.Println(id, kullanici, sifre, tarih) //kullaniciyi ekrana bastır
}
err := tablo.Err()
kontrol(err)
type kullanici struct {
id int
kullanici string
sifre string
tarih time.Time
}
tablo, _ := db.Query(`SELECT id, kullanici, sifre, tarih FROM kullanicilar`)
defer rows.Close()
var kullanicilar []kullanici
for tablo.Next() {
var k kullanici
err := tablo.Scan(&k.id, &k.kullanici, &k.sifre, &k.tarih)
kontrol(err)
kullanicilar = append(kullanicilar, k)
}
err := tablo.Err()
kontrol(err)