Go Dilinde Concurrency

2,313 More

Projedeki Git Dosyaları Nasıl Silinir?

1 7,911 More

yTheme

4 2,693 More

Sunucu Güvenliği | SSH (Secure Shell) Kullanımı

2 2,168 More

Truemag

  • PHP
  • Golang
  • Laravel
  • Linux
  • SQL
  • SEO
  • WordPress
  • Diğer
    • Yazılım
    • Javascript
    • Css/XHtml/W3C
    • Genel
    • Tanıtım
    • Ajax
  • Home
  • ANASAYFA
  • HAKKIMDA
  • SPONSORLUK
  • ARŞİV
  • İLETİŞİM
  • BENİMLE ÇALIŞMAK İSTER MİSİNİZ?

Go Programlama Dili (Golang) ile Veritabanı İşlemleri

golang mysql

Go Programlama Dili (Golang) ile aklınıza gelebilecek hemen her projeyi hayata geçirebilirsiniz. Projelerin türüne göre kullanılan teknolojiler değişmektedir ancak veritabanlarının birçok projede yaygın olarak kullanıldığını söyleyebiliriz. İşte bu nedenle Golang ile veritabanı (mysql) kullanımını basit örnekler ve kodlarla anlatmak istedim. Eğer Go dili ile kodlamaya başlamak için gerekli çalışma ortamını hazırladıysanız haydi başlayalım.

Github Sayfası ve Örnek Kodlar

Bu yazıda anlatılan tüm kodlar ve veritabanı şemasına projenin Github sayfasından ulaşabilirsiniz.

MySQL Driver Kurulumu ve Pakete Eklenmesi

Go Programlama Dili‘nde kullanacağınız veritabanına göre ilgili driver’ı kurmanız gerekmektedir. Bu yazımızda anlatacağım MySQL kullanımı için gerekli MySQL driver‘ını aşağıdaki komut ile kullanabiliriz.

1
go get -u github.com/go-sql-driver/mysql

Yükleme işlemi tamamlandıktan sonra projemizde veritabanı kullanımı için şu iki kütüphaneyi aşağıdaki şekilde projeye dahil etmeliyiz.

1
2
3
4
5
6
7
8
package ...
 
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
 
...

Örnek Veritabanı ve Tablonun Oluşturulması

Bu mini projemizde örnek bir veritabanı ve tablo kullanacağız. Bunun için öncelikle bir çalışma ortamınızda bir veritabanı oluşturmalısınız. Ben “godb” isimli bir veritabanı oluşturdum. Tablo olarak da aşağıdaki SQL sorgusunu, kullanacağınız veritabanında çalıştırabilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
DROP TABLE IF EXISTS `posts`;
 
CREATE TABLE `posts` (
  `id` int(6) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
INSERT INTO `posts` (`id`, `title`, `body`)
VALUES
(1,'Hello World','The content of the hello world'),
(2,'Hello Second World','The content of the hello second world');

Veritabanı (MySQL) Bağlantısının Yapılması

Gerekli paketlerin dâhil edilmesi ve örnek veritabanı ile tablonun kurulmasının ardından yapmamız gereken ilk şey veritabanına bağlantı kurmak. Bunun için golang dosyamızda aşağıdaki methodu kullanabiliriz. Elbette buradaki veritabanı ismi, kullanıcı adı ve parola gibi hususları kendi çalışma ortamınıza göre değiştirmelisiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
func dbConn() (db *sql.DB) {
 
dbDriver := "mysql"
dbUser := "root"
dbPass := "root"
dbName := "godb"
db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
if err != nil {
panic(err.Error())
}
 
return db
 
}
...

Tabloya Uygun Struct Yapısının Oluşturulması

Go Programlama Dili yani Golang‘de veritabanından veriyi çekerken, bu veriye uygun bir struct oluşturmalısınız. Bizim projemizdeki Posts tablosuna uygun struct yapısı şu şekildedir.

1
2
3
4
5
6
7
...
type Post struct {
Id    int
Title  string
Body string
}
...

Bu aşamaya kadar yaptıklarımızı hazırlık olarak değerlendirebiliriz. Bundan sonra veritabanı ile istediğimiz gibi çalışabiliriz.

Tüm Kayıtların Çekilerek Listelenmesi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
func getAll() {
 
db := dbConn()
 
selDB, err := db.Query("SELECT * FROM Posts ORDER BY id DESC")
if err != nil {
panic(err.Error())
}
 
post := Post{}
posts := []Post{}
 
for selDB.Next() {
 
var id int
var title, body string
 
err = selDB.Scan(&id, &title, &body)
if err != nil {
panic(err.Error())
}
 
post.Id = id
post.Title = title
post.Body = body
 
posts = append(posts, post)
}
 
for _, post := range posts {
fmt.Println(post.Title)
}
defer db.Close()
}

Tek Kaydın Çekilerek Gösterilmesi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
func getOne(postId int) {
 
db := dbConn()
 
selDB, err := db.Query("SELECT * FROM Posts WHERE id=?", postId)
if err != nil {
panic(err.Error())
}
 
post := Post{}
 
for selDB.Next() {
 
var id int
var title, body string
 
err = selDB.Scan(&id, &title, &body)
if err != nil {
panic(err.Error())
}
 
post.Id = id
post.Title = title
post.Body = body
 
}
 
fmt.Println("Post Title : " + post.Title)
fmt.Println("Post Body : " + post.Body)
 
defer db.Close()
}

Yeni Kayıt Eklenmesi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func add() {
 
db := dbConn()
 
title := "Hello Second World"
body := "The content of the hello second world"
insertQuery, err := db.Prepare("INSERT INTO Posts(title, body) VALUES(?,?)")
if err != nil {
panic(err.Error())
}
 
insertQuery.Exec(title, body)
 
fmt.Println("ADDED: Title: " + title + " | Body: " + body)
 
defer db.Close()
 
}

Mevcut Kaydın Güncellenmesi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func update(postId int) {
 
db := dbConn()
 
title := "Hello 1 World"
body := "The content of the hello 1 world"
updateQuery, err := db.Prepare("UPDATE Posts SET title=?, body=? WHERE id=?")
if err != nil {
panic(err.Error())
}
 
updateQuery.Exec(title, body, postId)
 
fmt.Println("UPDATED: Title: " + title + " | Body: " + body)
 
defer db.Close()
 
}

Herhangi Bir Kaydın Silinmesi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func delete(postId int) {
 
db := dbConn()
 
deleteQuery, err := db.Prepare("DELETE FROM Posts WHERE id=?")
if err != nil {
panic(err.Error())
}
 
deleteQuery.Exec(postId)
 
fmt.Println("DELETED")
 
defer db.Close()
 
}

Main Methodu

Dosyamızda yukarıdaki methodları çalıştırmak için şöyle bir main methodu kullanabiliriz.

1
2
3
4
5
6
7
8
9
func main()  {
 
add()
update(1)
delete(1)
getOne(1)
getAll()
}

Son Sözler

Bu projede temel seviyede programlama bilgisine sahip olanlara hitap edecek şekilde Golang ile veritabanı işlemlerini anlatmaya çalıştım. Tekrar etmem gerekirse yukarıda anlattığım kodların derli toplu ve çalışır haline projenin Github sayfasından ulaşabilirsiniz. İyi çalışmalar dilerim.

Mar 4, 2018Erhan Yakut
Cloud Sunucu


hosting

Go Programlama Dili (Golang) ile Dosya İşlemleriGo Programlama Dili (Golang) For Döngüleri
You Might Also Like
 
Go Programlama Dili (Golang) ile Ayar Dosyası Kullanımı
 
Go Programlama Dili (Go) Kurulumu
Erhan Yakut
3 years ago GolangGo, Go Dersleri, Go Dili, Go Programla, Go Programlama Dili, Go Programlama Dili ile Veritabanı İşlemleri, Go Programlama Dili ve MySQL, Golang, Golang ile Veritabanı İşlemleri1,630
Sponsorlar

sponsor

sponsor

sponsor

sponsor
Bağlantılar
  • Beyazıt Kölemen
  • Domatessuyu
  • Lezzetli Robot Tarifleri
  • Ofizzo
  • PHP Dersleri
  • Wordpress Hosting
Random Posts
Legal Code
Php İle Dizileri Sıralamak
Fikir Atölyesi
Php ile Veritabanı (Mysql) İşlemleri
Televizyon Sihrini Yaşamak İçin Digitürk’ten Yararlanın
sdafasdf
Hakkımda

Bilişim Teknolojileri alanında içerik üretmek üzere oluşturulmuş olan Yakuter.com 2006 yılında Erhan Yakut tarafından hayata geçirilmiştir. devamını okuyun…

CLOUD SUNUCU DESTEĞİ
2006-2020 © Yakuter