Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "context"
  5. "fmt"
  6. "log"
  7.  
  8. "github.com/jmoiron/sqlx"
  9. _ "github.com/mattn/go-sqlite3"
  10. "github.com/pkg/errors"
  11. )
  12.  
  13. func main() {
  14. ctx := context.Background()
  15. if err := run(ctx); err != nil {
  16. log.Fatalf("!!%+v", err)
  17. }
  18. }
  19.  
  20. func run(ctx context.Context) error {
  21. db, err := sqlx.ConnectContext(ctx, "sqlite3", ":memory:")
  22. if err != nil {
  23. return err
  24. }
  25.  
  26. // create table
  27. {
  28. schema := `
  29. CREATE TABLE person (
  30. first_name text,
  31. last_name text,
  32. email text
  33. );
  34. `
  35. result := db.MustExecContext(ctx, schema)
  36. fmt.Println("@", "ok", result)
  37. }
  38.  
  39. // insert data
  40. {
  41. tx := db.MustBegin()
  42. query := "INSERT INTO person (first_name, last_name, email) VALUES ($1, $2, $3)"
  43. {
  44. fmt.Println("@@", query, "Jason", "Moiron", "jmoiron@jmoiron.net")
  45. tx.MustExec(query, "Jason", "Moiron", "jmoiron@jmoiron.net")
  46. }
  47. {
  48. fmt.Println("@@", query, "John", "Doe", "johndoeDNE@gmail.net")
  49. tx.MustExec(query, "John", "Doe", "johndoeDNE@gmail.net")
  50. }
  51.  
  52. tx.Commit()
  53. fmt.Println("@@", "ok")
  54. }
  55.  
  56. // select count
  57. {
  58. var c int
  59. query := "SELECT COUNT(*) FROM person ORDER BY first_name ASC"
  60. fmt.Println("@@@", query)
  61.  
  62. err := db.GetContext(ctx, &c, query)
  63. if err != nil {
  64. return errors.Wrap(err, "select count")
  65. }
  66. fmt.Println("@@@", "count", c)
  67. fmt.Println("@@@", "ok")
  68. }
  69. return nil
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement