查询数据

最近更新时间: 2024-06-12 15:06:00

package main
import (
    "fmt"
    "strings"
    "time"
    "github.com/jackc/pgx"
)
func main() {
    var error_msg string
    var sql string
    //连接数据库
    conn, err := db_connect()
    if err != nil {
        error_msg = "连接数据库失败,详情:" + err.Error()
        write_log("Error", error_msg)
        return
    }
    //程序运行结束时关闭连接
    defer conn.Close()
    write_log("Log", "连接数据库成功")
    sql = "SELECT id,nickname FROM public.tbase LIMIT 2"
    rows, err := conn.Query(sql)
    if err != nil {
        error_msg = "查询数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
        return
    } else {
        write_log("Log", "查询数据成功")
    }
    var nickname string
    var id string

    for rows.Next() {
        err = rows.Scan(&id, &nickname)
        if err != nil {
            error_msg = "执行查询失败,详情:" + err.Error()
            write_log("Error", error_msg)
            return
        }
        error_msg = fmt.Sprintf("id:%s nickname:%s", id, nickname)
        write_log("Log", error_msg)
    }
    rows.Close()
    nickname = "tbase"
    sql = "SELECT id,nickname FROM public.tbase WHERE nickname ='" + sql_data_encode(nickname) + "' "
    rows, err = conn.Query(sql)
    if err != nil {
        error_msg = "查询数据失败,详情:" + err.Error()
        write_log("Error", error_msg)
        return
    } else {
        write_log("Log", "查询数据成功")
    }
    defer rows.Close()

    for rows.Next() {
        err = rows.Scan(&id, &nickname)
        if err != nil {
            error_msg = "执行查询失败,详情:" + err.Error()
            write_log("Error", error_msg)
            return
        }
        error_msg = fmt.Sprintf("id:%s nickname:%s", id, nickname)
        write_log("Log", error_msg)
    }
}
/*
功能描述:sql查询拼接字符串编码
参数说明:
str -- 要编码的字符串
返回值说明:
返回编码过的字符串
*/
func sql_data_encode(str string) string {
    return strings.Replace(str, "'", "''", -1)
}
/*
功能描述:写入日志处理
参数说明:
log_level -- 日志级别,只能是是Error或Log
error_msg -- 日志内容
返回值说明:无
*/
func write_log(log_level string, error_msg string) {
    //打印错误信息
    fmt.Println("访问时间:", time.Now().Format("2006-01-02 15:04:05"))
    fmt.Println("日志级别:", log_level)
    fmt.Println("详细信息:", error_msg)
}
/*
功能描述:连接数据库
参数说明:无
返回值说明:
conn *pgx.Conn -- 连接信息
err error --错误信息
*/
func db_connect() (conn *pgx.Conn, err error) {
    var config pgx.ConnConfig
    config.Host = "127.0.0.1"    //数据库主机host或ip
    config.User = "tbase"         //连接用户
    config.Password = "pgsql"    //用户密码
    config.Database = "postgres" //连接数据库名
    config.Port = 15432          //端口号
    conn, err = pgx.Connect(config)
    return conn, err
}
[root@VM_0_29_centos tbase]# go run select.go
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: 连接数据库成功
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: 查询数据成功
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: id:2 nickname:tbase
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: id:3 nickname:postgresql
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: 查询数据成功
访问时间: 2018-04-09 10:35:50
日志级别: Log
详细信息: id:1 nickname:tbase