databases


Example of creating a table, inserting rows, and reading rows from a sqlite3 database

Node.js

  1. const sqlite3 = require('sqlite3').verbose()
  2. const db = new sqlite3.Database('./sqlite3.db')
  3. db.serialize(() => {
  4. db.run('CREATE TABLE persons (name TEXT)')
  5. const stmt = db.prepare('INSERT INTO persons VALUES (?)')
  6. const names = ['alice', 'bob', 'charlie']
  7. for (let i = 0; i < names.length; i++) {
  8. stmt.run(names[i])
  9. }
  10. stmt.finalize()
  11. db.each('SELECT rowid AS id, name FROM persons', (err, row) => {
  12. if (err) {
  13. console.error(err)
  14. return
  15. }
  16. console.log(row.id, row.name)
  17. })
  18. })
  19. db.close()

Output

  1. 1 'alice'
  2. 2 'bob'
  3. 3 'charlie'

Go

  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. _ "github.com/mattn/go-sqlite3"
  6. )
  7. func main() {
  8. db, err := sql.Open("sqlite3", "./sqlite3.db")
  9. if err != nil {
  10. panic(err)
  11. }
  12. defer db.Close()
  13. _, err = db.Exec("CREATE TABLE persons (name TEXT)")
  14. if err != nil {
  15. panic(err)
  16. }
  17. tx, err := db.Begin()
  18. if err != nil {
  19. panic(err)
  20. }
  21. stmt, err := tx.Prepare("INSERT INTO persons VALUES (?)")
  22. if err != nil {
  23. panic(err)
  24. }
  25. defer stmt.Close()
  26. names := []string{"alice", "bob", "charlie"}
  27. for _, name := range names {
  28. _, err := stmt.Exec(name)
  29. if err != nil {
  30. panic(err)
  31. }
  32. }
  33. tx.Commit()
  34. rows, err := db.Query("SELECT rowid AS id, name FROM persons")
  35. if err != nil {
  36. panic(err)
  37. }
  38. defer rows.Close()
  39. for rows.Next() {
  40. var id int
  41. var name string
  42. err = rows.Scan(&id, &name)
  43. if err != nil {
  44. panic(err)
  45. }
  46. fmt.Println(id, name)
  47. }
  48. err = rows.Err()
  49. if err != nil {
  50. panic(err)
  51. }
  52. }

Output

  1. 1 alice
  2. 2 bob
  3. 3 charlie