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. iOS内存管理 -讲的不错,角度独特

    ios的内存管理,包括对象的所有权与引用计数.自动释放.访问器方法与属性.一些会改变引用计数的特殊情况          ----- 对象所有权(ownership) 与引用计数 (retain co ...

  2. java swing MenuItem乱码处理

    用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,就只有托盘中点击小图标时弹出的菜单中的中文是方框(中文方块) 解决: 1: 在你的具有main函数的类也即你应用运行的主类上点击右 ...

  3. SharePoint 删除废弃站点步骤

    前言 在SharePoint的日常使用中,经常会有一些废弃的站点需要删除,比如测试站点或者不再使用的站点等,我们应该如何去删除这些站点呢?下面,我们就为大家介绍. 正文 进入SharePoint服务器 ...

  4. Swift - 通过叠加UILabel来实现混合的进度条

    Swift - 通过叠加UILabel来实现混合的进度条 效果 源码 https://github.com/YouXianMing/Swift-Animations // // MixedColorP ...

  5. win7凭据管理、win7多用户远程登录、主机头设置、nuget.org无法访问

    前言  最近遇到的几个问题,然后处理在此对处理方式进行记录一下. 1.服务器共享文件夹,在本机进行访问登录时,每次登录或者每次开机进入都要进行登录的权限认证,这样很麻烦. 2.服务器难免会有多用户同时 ...

  6. Material Designer的低版本兼容实现(十一)—— Switch

    5.0中的switch和之前完全不同了,漂亮不漂亮咱们另说,总之4.x上是没有这样的效果了.实现方式有两种,一种是用这个兼容包来做类似的效果,一种是用传统的checkbox来代替.我感觉兼容包的效果是 ...

  7. 《Redis设计与实现》

    <Redis设计与实现> 基本信息 作者: 黄健宏 丛书名: 数据库技术丛书 出版社:机械工业出版社 ISBN:9787111464747 上架时间:2014-6-3 出版日期:2014 ...

  8. ab命令作apache压力测试

    ab命令作apache压力测试 ./ab -c 100 -n 10000 http://127.0.0.1/index.php -c 100 即:每次并发100个 -n 10000 即: 共发送100 ...

  9. 「BZOJ」「3262」陌上花开

    CDQ分治 WA :在solve时,对y.z排序以后,没有处理「y.z相同」的情况,也就是说可能(1,2,3)这个点被放到了(2,2,3)的后面,也就是统计答案在前,插入该点在后……也就没有统计到! ...

  10. 突发奇想-取缔宏定义,用另外一种语言来做C++的部分外层封装

    突发奇想:用一种语言 来编写C++外挂,可以替代宏定义,可以这么做,在C++里面加入特定标签,比如<javascript></javascript>中间的代码可以翻译成C++代 ...