csjiabin's blog csjiabin's blog
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

csjiabin

前端界的小菜鸟
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • comments
  • printing
  • logging
  • variables
  • interpolation
  • types
  • type check
  • if/else
  • for
  • while
  • switch
  • arrays
  • uint8 arrays
  • array iteration
  • array sorting
  • buffers
  • maps
  • objects
  • functions
  • default values
  • destructuring
  • spread operator
  • rest operator
  • swapping
  • classes
  • generators
  • datetime
  • timeout
  • interval
  • IIFE
  • files
  • json
  • big numbers
  • promises
  • async await
  • streams
  • event emitter
  • errors
  • try/catch
  • exceptions
  • regex
  • exec
  • tcp server
  • udp server
  • http server
  • url parse
  • gzip
  • dns
  • crypto
  • env vars
  • cli args
  • cli flags
  • stdout
  • stderr
  • stdin
  • modules
  • stack trace
  • databases
    • testing
    • benchmarking
    • documentation
    • 《面向Nodejs开发者的Go》
    miguelmota
    2022-09-29
    目录

    databases

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

    # Node.js

    const sqlite3 = require("sqlite3").verbose();
    const db = new sqlite3.Database("./sqlite3.db");
    
    db.serialize(() => {
      db.run("CREATE TABLE persons (name TEXT)");
    
      const stmt = db.prepare("INSERT INTO persons VALUES (?)");
      const names = ["alice", "bob", "charlie"];
      for (let i = 0; i < names.length; i++) {
        stmt.run(names[i]);
      }
    
      stmt.finalize();
    
      db.each("SELECT rowid AS id, name FROM persons", (err, row) => {
        if (err) {
          console.error(err);
          return;
        }
    
        console.log(row.id, row.name);
      });
    });
    
    db.close();
    
    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

    Output

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

    # Go

    package main
    
    import (
    	"database/sql"
    	"fmt"
    
    	_ "github.com/mattn/go-sqlite3"
    )
    
    func main() {
    	db, err := sql.Open("sqlite3", "./sqlite3.db")
    	if err != nil {
    		panic(err)
    	}
    	defer db.Close()
    
    	_, err = db.Exec("CREATE TABLE persons (name TEXT)")
    	if err != nil {
    		panic(err)
    	}
    
    	tx, err := db.Begin()
    	if err != nil {
    		panic(err)
    	}
    
    	stmt, err := tx.Prepare("INSERT INTO persons VALUES (?)")
    	if err != nil {
    		panic(err)
    	}
    	defer stmt.Close()
    
    	names := []string{"alice", "bob", "charlie"}
    
    	for _, name := range names {
    		_, err := stmt.Exec(name)
    		if err != nil {
    			panic(err)
    		}
    	}
    	tx.Commit()
    
    	rows, err := db.Query("SELECT rowid AS id, name FROM persons")
    	if err != nil {
    		panic(err)
    	}
    	defer rows.Close()
    
    	for rows.Next() {
    		var id int
    		var name string
    		err = rows.Scan(&id, &name)
    		if err != nil {
    			panic(err)
    		}
    		fmt.Println(id, name)
    	}
    
    	err = rows.Err()
    	if err != nil {
    		panic(err)
    	}
    }
    
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63

    Output

    1 alice
    2 bob
    3 charlie
    
    1
    2
    3

    ⬆ back to top

    编辑 (opens new window)
    #Go#Node.js
    上次更新: 2022/09/30, 11:34:22
    stack trace
    testing

    ← stack trace testing→

    最近更新
    01
    咖啡知识
    10-13
    02
    documentation
    09-29
    03
    benchmarking
    09-29
    更多文章>
    Theme by Vdoing | Copyright © 2018-2022 csjiabin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式