1:data/data.go

package data

import(
"fmt"
"database/sql"
_"github.com/lib/pq"
) const(
host = "192.168.72.128"
port =
user = "test"
password = "test"
dbname = "testdb"
) var Db *sql.DB func init(){
var err error pgInfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname) Db, err = sql.Open("postgres", pgInfo) if err != nil{
panic(err)
}
}

2:post/post.go

package post

import(
."Chapter10/data"
) type Post struct{
ID int `json:"id"`
Content string `json:"content"`
Author string `json:"author"`
} func (post *Post) AddPost()(err error){
sql := "insert into post(content,author) values($1,$2) returning id"
stmt, err := Db.Prepare(sql)
if err != nil{
return
}
defer stmt.Close()
err = stmt.QueryRow(post.Content, post.Author).Scan(&post.ID)
return
} func (post *Post) DelPost()(err error){
sql := "delete from post where id=$1"
_,err = Db.Exec(sql, post.ID)
return
} func (post *Post) EditPost()(err error){
sql := "update post set content=$1 where id=$2"
_,err = Db.Exec(sql, post.Content, post.ID)
return
} func FindPost(id int)(err error, post Post){
sql := "select id, content, author from post where id=$1"
post = Post{}
err = Db.QueryRow(sql, id).Scan(&post.ID, &post.Content, &post.Author)
return
}

3:main.go

package main

import(
"encoding/json"
"net/http"
"path"
"strconv"
"time"
."Chapter10/post"
) type Result struct{
No int `json:"no"`
Msg string `json:"msg"`
Obj interface{} `json:"obj,omitempty"`
Time time.Time `json:"response_time"`
} func main(){
server := http.Server{
Addr: "127.0.0.1:8080",
}
http.HandleFunc("/post/", handlerRequest)
server.ListenAndServe()
} func handlerRequest(w http.ResponseWriter, r *http.Request){
var err error
switch r.Method{
case "GET":
err = handleGet(w, r)
case "POST":
err = handlePost(w, r)
case "PUT":
err = handlePut(w, r)
} if err != nil{
http.Error(w, err.Error(), http.StatusInternalServerError)
}
} func handleGet(w http.ResponseWriter, r *http.Request)(err error){
id, err := strconv.Atoi(path.Base(r.URL.Path))
if err != nil{
return
}
err,post := FindPost(id)
if err != nil{
return
} var result = Result{
No:,
Msg:"获取POST信息",
Obj:post,
Time:time.Now(),
} output, err := json.Marshal(&result)
if err != nil{
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(output)
return
} func handlePost(w http.ResponseWriter, r *http.Request)(err error){
len := r.ContentLength
body := make([]byte, len)
r.Body.Read(body) var post Post
json.Unmarshal(body, &post) err = post.AddPost()
if err != nil{
return
} var result = Result{
No:,
Msg:"保存POST信息",
Time:time.Now(),
}
output, err := json.Marshal(&result)
if err != nil{
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(output)
return
} func handlePut(w http.ResponseWriter, r *http.Request)(err error){
len := r.ContentLength
body := make([]byte, len)
r.Body.Read(body) var post Post
json.Unmarshal(body, &post) err = post.EditPost()
if err != nil{
return
} var result = Result{
No:,
Msg:"修改POST信息",
Time:time.Now(),
}
output, err := json.Marshal(&result)
if err != nil{
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(output)
return
}

014-Go Web 对pg增删改查测试的更多相关文章

  1. web sql 基本操作 - 增删改查

    不喜欢看md原文的 可以访问这个链接:http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删 ...

  2. Java web 简单的增删改查程序(超详细)

    就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { privat ...

  3. Python Web实战:Python+Django+MySQL实现基于Web版的增删改查

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最 ...

  4. java web数据库的增删改查详细

    本次课上实验是完成数据库的增删改查. 包括增加用户信息.删除用户信息.多条件查找用户信息.修改用户信息(主要是复选框单选框等的相关操作.) 下面下看一下各个界面的样子. 总页面:显示全部页面:增加页面 ...

  5. eclipse控制台下实现jdbc简单的增删改查测试

    1.现在MySQL中创建一个表 2.首先创建一个类 //导入的包 import java.sql.Connection;import java.sql.DriverManager;import jav ...

  6. java-数据库连接,分层实现增删改查测试

    成员属性类: public class Dog { private int number; private String name; private String strain; private St ...

  7. MyBatis项目配置案例详解与Web下的增删改查实现[附项目源码]

    MyBatis项目案例 项目图示: 项目源码地址:https://github.com/JluTiger/mybatispro 1.项目功能 项目案例:后台管理系统用户数据维护平台 所有用户数据查询 ...

  8. solr后台【web页面】增删改查

    就是在下面这个页面操作 增加 {"id":"2", "name": "添加"} 查询 id:2 修改 {"id ...

  9. java web简单的增删改查

    1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...

随机推荐

  1. Struts2学习笔记——Struts2与Spring整合

      Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的 ...

  2. ASP.NET MVC:模块化/插件式文章汇总

    方案 Shazwazza | Developing a plugin framework in ASP.NET MVC with medium trust 基于ASP.NET MVC3 Razor的模 ...

  3. 使用 ssh -R 建立反向/远程TCP端口转发代理

    转自:https://yq.aliyun.com/articles/8469 ssh是一个非常棒的工具, 不但能建立动态转发, 例如chrome的Switchy插件用到的就是这个技术.http://b ...

  4. source insight设置tab键为4个空格

    首先通过路径(Options->Document Options)进入以下界面: step 1:将 Visible tabs 打勾. step 2 :将 Expand Tabs 打勾. step ...

  5. 深入浅出!从语义角度分析隐藏在Unity协程背后的原理

    Unity的协程使用起来比较方便,但是由于其封装和隐藏了太多细节,使其看起来比较神秘.比如协程是否是真正的异步执行?协程与线程到底是什么关系?本文将从语义角度来分析隐藏在协程背后的原理,并使用C++来 ...

  6. 每天一个linux命令-curl命令

    下载文件 如果我们想要下载文件,而不是查看,那么可以使用如下命令: curl -O http://mif.polimercolor.ru/mifsoft/MDict.zip 以上命令会下载文件并以原名 ...

  7. Shape 各种属性详解

    本文来自:http://blog.csdn.net/brokge/article/details/9713041 简介: 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xm ...

  8. 单因素方差分析(One Way ANOVA)

    Analysis of variance (ANOVA) is a collection of statistical models and their associated estimation p ...

  9. c++ 如何编写接口类(interface)

    接口类简介: 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法. 用c++实现接口类时需要 ...

  10. easyui combobox默认选中项

    今天写前端代码发现combobox还挺难搞, $("#select_Dic").combobox({                        url: "http: ...