go 自己封的postgresql操作包

  1 package myDB
  2
  3 import (
  4     "database/sql"
  5     "errors"
  6
  7     _ "github.com/lib/pq"
  8 )
  9
 10 var db *sql.DB = nil
 11
 12 func OpenSql() error {
 13     var err error = nil
 14     db, err = sql.Open("postgres", "port=5432 user=postgres password=123456 dbname=postgres sslmode=disable")
 15     return err
 16 }
 17
 18 func GetDB() (*sql.DB, error) {
 19     if db == nil {
 20         return nil, errors.New("db hadn‘t open")
 21     }
 22     return db, nil
 23 }
 24
 25 func dealResult(result sql.Result) error {
 26     affect, err := result.RowsAffected()
 27     if err != nil {
 28         return err
 29     }
 30     if affect <= 0 {
 31         return errors.New("DBExec no affect")
 32     }
 33     return nil
 34 }
 35 func ExecSql(Sql string, args ...interface{}) error {
 36     stmt, err := db.Prepare(Sql)
 37     defer stmt.Close()
 38     if err != nil {
 39         return err
 40     }
 41     result, err := stmt.Exec(args...)
 42     if err != nil {
 43         return err
 44     }
 45     return dealResult(result)
 46 }
 47
 48 func QuerySql(Sql string, args ...interface{}) (*sql.Rows, error) {
 49     stmt, err := db.Prepare(Sql)
 50     defer stmt.Close()
 51     if err != nil {
 52         return nil, err
 53     }
 54     rows, err := stmt.Query(args...)
 55     if err != nil {
 56         return nil, err
 57     }
 58     return rows, err
 59 }
 60
 61 func TxQuerySql(tx *sql.Tx, Sql string, args ...interface{}) (*sql.Stmt, *sql.Rows, error) {
 62     stmt, err := tx.Prepare(Sql)
 63     if err != nil {
 64         return nil, nil, err
 65     }
 66     rows, err := stmt.Query(args...)
 67     if err != nil {
 68         return nil, nil, err
 69     }
 70     return stmt, rows, err
 71 }
 72
 73 func TxExecSql(tx *sql.Tx, Sql string, args ...interface{}) error {
 74     stmt, err := tx.Prepare(Sql)
 75     defer stmt.Close()
 76     if err != nil {
 77         return err
 78     }
 79     result, err := stmt.Exec(args...)
 80     if err != nil {
 81         return err
 82     }
 83     return dealResult(result)
 84 }
 85
 86 func ExecMultiSql(Sql string, member []string, args ...interface{}) error {
 87     stmt, err := db.Prepare(Sql)
 88     if err != nil {
 89         return err
 90     }
 91     for _, val := range member {
 92         allArgs := make([]interface{}, 0)
 93         allArgs = append(allArgs, val)
 94         allArgs = append(allArgs, args...)
 95         result, err := stmt.Exec(allArgs...)
 96         if err != nil {
 97             return err
 98         }
 99         err = dealResult(result)
100         if err != nil {
101             return err
102         }
103     }
104     return nil
105 }
106
107 func TxExecMultiSql(tx *sql.Tx, Sql string, member []string, args ...interface{}) error {
108     stmt, err := tx.Prepare(Sql)
109     defer stmt.Close()
110     if err != nil {
111         return err
112     }
113     for _, val := range member {
114         allArgs := make([]interface{}, 0)
115         allArgs = append(allArgs, val)
116         allArgs = append(allArgs, args...)
117         result, err := stmt.Exec(allArgs...)
118         if err != nil {
119             return err
120         }
121         err = dealResult(result)
122         if err != nil {
123             return err
124         }
125     }
126     return nil
127 }

myDB

时间: 2024-11-02 03:37:39

go 自己封的postgresql操作包的相关文章

PostgreSQL Replication之第一章 理解复制概念(1)

PostgreSQL Replication系列翻译自PostgreSQL Replication一书 在本章中,将会介绍不同的复制概念,您会了解哪些类型的复制对哪一种实用场景是最合适的. 在本章的最后,您将能够判断某个概念在各种情况下是否是可行的. 我们在本章将介绍以下主题: • CAP理论 •复制的物理限制 •为什么延迟有影响 •同步和异步复制 •拆分和复制 在我们使用PostgreSQL实际工作之前,我们将引导您完成一些非常基本的与复制相关想法和事实. 1.1 CAP理论和物理限制 您可能

postgresql Linux安装

1,改权限,执行命令:chmod 755 postgresql-9.2.4-1-linux-x64.run 2,执行命令安装数据库.进入文件所在目录,输入./postgresql-9.2.4-1-linux-x64.run .然后选择数据库安装目录. 本篇默认直接回车.即安装路径为/opt/PostgreSQL/9.2/ 3,选择数据保存的路径.本篇也默认.直接回车.即路径为:/opt/PostgreSQL/9.2/data 目录. 4,设置postgres账户的密码,以及设置端口号.本篇端口号

seam2.2根据已有数据库(postgresql)生成项目

首先呢,这是我向同哥请教的一个文题,然后同哥把整个过程给我解答了一遍,谢谢同哥的乃森及引针啦---- seam2.2根据已有数据库(postgresql)生成项目 一,建数据库 进入pgAdmin新建一个数据库然后用eclipse的插件ErMaster导出sql或者是自己手写sql新建数据表 ,这里新建了一个名为test的数据库 里面有两个表,member和department,为多对一的关系,注意不要忘了设置主键 二,进入seam目录运行 ./seam setup ./seam create-

微信公众号广告域名地址防封方案

前两年在一些诱导站上投放广告还是挺容易的(不怎么封),就算是投诉量大了,被封了,换个域名又能支撑很久.但这几年腾讯针对这一块可是封的越来越厉害,使很多广告投放商百般无奈...那需要怎么做呢?往下看!! 一.域名选型 首先在域名选型上有是要求的,需要找一些备案年份长,曾经有过大流量的域名,当然还是没被微信屏蔽过的域名,我一般是在抢米小幽灵(www.xul.cc)购买,域名比较多,找起来比较容易... 二.域名检测工具 域名搞定之后,需要有一个域名检测工具来自动切换被微信封掉的域名,市面上这种接口和

postgresql学习之安装篇

---恢复内容开始--- 安装方法: 1.可以使用操作系统自带的安装源 2.可以使用官网下载的源码进行安装 3.可以使用编译好的包入.run格式的安装包安装(本文使用的是这种安装方法,下载地址http://www.postgres.cn/download) 安装之前首先需要为postgresql数据库新建一个管理员用户: groupadd postgres mkdir /home/postgres useradd postgres -g postgres -s /bin/bash -b /hom

PostgreSQL数据库中跨库访问解决方案

PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访问. 方法A的示例如下: 测试1(测试postgres超级用户对不同schema下对象的访问) 查看当前数据库中的schema postgres=# \dn List of schemas Name | Owner -------------------+--------- dbms_job_pro

PostgreSQL[9.4-9.6]——服务器管理

一.编译安装: 环境准备: GNU make 版本 >=3.8 (make --version) ISO/ANSI C 编译器,至少須兼容 C89 标准,GCC 或 intel 編译器等均可 gzip .bzip2 .tar ,源码解包 GNU Readline 库,用于 psql 操作历史命令 安全相关模块:Kerberos.OpenSSL.OpenLDAP.PAM 等,需要事先安装好对应的包 如果要使用 PL/Python.PL/Perl.PL/Tcl 等过程語言,須保証語言本身及相关的开发

PowerDesigner反向工程PostgreSQL数据库

1. 环境准备: a)         安装PowerDesigner,以PowerDesigner15.1为例 b)         安装java jdk,以jdk-7-windows-i586为例 c)         下载postgressql jdbc驱动jar包,以postgresql-8.1-415.jdbc2.jar为例 2. 远程连接PostgreSQL数据库 a)         打开PowerDesigner b)         新建一个空白物理数据模型 点击PowerDe

广州postgresql用户会技术交流会小记 2015-9-19

广州postgresql用户会技术交流会小记  2015-9-19 今天去了广州postgresql用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用postgresql -X2的情况 第二个讲师介绍了postgresql里面的一些执行计划分析 我个人比较关注第一个session,因为涉及到真正的应用案例 网上有对postgresql -X2的简短介绍,我先转载过来 转载:http://francs3.blog.163.com/blog/static/405767272