zoukankan      html  css  js  c++  java
  • 005-Go 操作PostgreSQL数据库

    package main
    
    import(
        "fmt"
        "database/sql"
        _ "github.com/lib/pq"
        "github.com/kataras/iris"
        "github.com/kataras/iris/middleware/logger"
        "github.com/kataras/iris/middleware/recover"
    )
    
    const(
        host = "127.0.0.1"
        port = 5432
        user = "test"
        password = "test"
        dbname = "test"
    )
    
    type User struct{
        Uno        string `json:"uno"`
        Uname    string    `json:"uname"`
    }
    
    func main(){
        app := iris.New()
        
        app.Logger().SetLevel("debug")
    
        app.Use(recover.New())
        app.Use(logger.New())
    
        app.Get("/users", func(ctx iris.Context){
            psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
                "password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)
    
            db, err := sql.Open("postgres", psqlInfo)
            if err != nil{
                panic(err)
            }
            defer db.Close()
    
            err = db.Ping()
            if err != nil{
                panic(err)
            }
    
            fmt.Println("Successfully connected!")
    
            var users []User
    
            rows,err := db.Query("select uno,uname from t_user")
            if err != nil{
                panic(err.Error)
            }
            defer rows.Close()
    
            for rows.Next(){
                rows.Columns()
    
                var user User
                err = rows.Scan(&user.Uno,&user.Uname)
    
                if err != nil {
                    panic(err.Error)
                }
    
                users = append(users, user)
            }
    
            ctx.JSON(users)
        })
    
        app.Get("/user", func(ctx iris.Context){
            psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
                "password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)
    
            db, err := sql.Open("postgres", psqlInfo)
            if err != nil{
                panic(err)
            }
            defer db.Close()
    
            err = db.Ping()
            if err != nil{
                panic(err)
            }
    
            fmt.Println("Successfully connected!")
    
            sqlQuery := `select uno,uname from t_user where uno=$1`
    
            var user User
    
            row := db.QueryRow(sqlQuery, ctx.URLParam("uno"))
    
            err = row.Scan(&user.Uno,&user.Uname)
    
            switch err{
            case sql.ErrNoRows:
                fmt.Println("No rows were returned!")
            case nil:
                fmt.Println(user)
                ctx.JSON(user)
            default:
                panic(err) 
            }
    
        })
    
        app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
    }
  • 相关阅读:
    JavaScript 显示数据
    c#运算符重载
    C++栈和队列标准库函数
    unity AB打包 unity2018.2.2
    VR AR SDK汇总
    Unity程序们经常用到的网址(方便自己用,一直更新)
    Unity打包Visual Studio部署HoloLens找不到WindowsMobile SDK的解决方案
    【Unity3D】串口通信
    【Unity3D】锁屏、解锁相关函数回调
    Unity3D Destroy方法的细节
  • 原文地址:https://www.cnblogs.com/yshyee/p/8711472.html
Copyright © 2011-2022 走看看