Go Sqlite İle Çalışma

Veritabanları ile çalışmazsak olmaz dimi. Zaten ülkemizde yazılımcıların çoğu zaman yaptığı iş veri kaydedip okumak değil mi ? 🙂 Deli gibi program yazdığını düşünen arkadaşların bundan ötesini yapmadığını biliyoruz.

Neyse konumuz o değil…

Burada Sqlite gibi lightweight bir veritabanında standart CRUD işlemlerini yapıyoruz.

CRUD ne derseniz;

C: Create
R: Read
U: Update
D: Delete

ilk önce

_ "github.com/mattn/go-sqlite3"

import edeceğiniz library bu ve dikkat edin önüne _ koyuyoruz.

sonra main de

db, err = sql.Open("sqlite3", "dosya yolu gelecek");

if err != nil {
       fmt.Println(err)
       return
} else {
       fmt.Println("Database Accessible", "sqlLite")
}

bu bağlantımızı oluşturur

tabi main dışında bi yerde de

var db *sql.DB

değişkeni tanımlayın çünkü diğer fonksiyonlardan database’e erişmek isteyeceğiz.

daha sonra verileri okumak için

rows, err = db.Query("SELECT * FROM tblUser ")
if err == nil {
       for rows.Next() {
              var userID int
              var userName string
              err = rows.Scan(&userID, &userName)
              if err == nil {
                   fmt.Println(userID,userName)
              } else {
                   fmt.Println("err", err)
              }

       }
} else {
       fmt.Println(err)
       return
}
rows.Close()

daha sonra insert için

stmt, err := db.Prepare("INSERT INTO tblUser(userName) values(?)")
if err != nil {
       fmt.Println(err)
}
res, err := stmt.Exec(homeName)
if err != nil {
       fmt.Println(err)
}
id, err := res.LastInsertId()
if err != nil {
       fmt.Println(err)
}

daha sonra silmek için

stmt, err := db.Prepare("delete FROM tblUser where userID=?")
if err != nil {
       fmt.Println(err)
}
res, err := stmt.Exec(userID)
if err != nil {
       fmt.Println(err)
}
_, err = res.RowsAffected()
if err != nil {
       fmt.Println(err)
}

daha sonra update için

stmt, err := db.Prepare("update tblUser set userName=? where userID=?")
if err != nil {
       fmt.Println(err)
}
res, err := stmt.Exec(r.FormValue("userName"), r.FormValue("userID"))
if err != nil {
       fmt.Println(err)
}
affect, err := res.RowsAffected()
if err != nil {
       fmt.Println(err)
}
_ = affect
alierbey | 15/11/2017

Leave a Reply