014-Go Web 对pg增删改查测试
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增删改查测试的更多相关文章
- web sql 基本操作 - 增删改查
不喜欢看md原文的 可以访问这个链接:http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删 ...
- Java web 简单的增删改查程序(超详细)
就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { privat ...
- Python Web实战:Python+Django+MySQL实现基于Web版的增删改查
前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最 ...
- java web数据库的增删改查详细
本次课上实验是完成数据库的增删改查. 包括增加用户信息.删除用户信息.多条件查找用户信息.修改用户信息(主要是复选框单选框等的相关操作.) 下面下看一下各个界面的样子. 总页面:显示全部页面:增加页面 ...
- eclipse控制台下实现jdbc简单的增删改查测试
1.现在MySQL中创建一个表 2.首先创建一个类 //导入的包 import java.sql.Connection;import java.sql.DriverManager;import jav ...
- java-数据库连接,分层实现增删改查测试
成员属性类: public class Dog { private int number; private String name; private String strain; private St ...
- MyBatis项目配置案例详解与Web下的增删改查实现[附项目源码]
MyBatis项目案例 项目图示: 项目源码地址:https://github.com/JluTiger/mybatispro 1.项目功能 项目案例:后台管理系统用户数据维护平台 所有用户数据查询 ...
- solr后台【web页面】增删改查
就是在下面这个页面操作 增加 {"id":"2", "name": "添加"} 查询 id:2 修改 {"id ...
- java web简单的增删改查
1.主要的文件,运行结果,运行界面,数据库创建的表等图片. 所要创建的文件和要导入的包: 主页面: 显示界面: 数据库的信息: 删除.查找.修改就不一 一列出来,自己可以运行看看.哈哈 2.接下来我将 ...
随机推荐
- WordPress主题开发:get_term_by和get_term_link
学习目的: 某一个分类的名称.别名.和id都可以到后台自己去找,但这样找比较麻烦还容易看错,wordpress提供了下面两个函数get_term_by和get_term_link,只要提供别名.名称或 ...
- python测试开发django-12.models设置主键primary_key
前言 django的models新增数据库表时,如果不设置主键,会默认新增一个id为主键,如果我们想自己设置一个字段为主键,需加个参数primary_key=True 默认id主键 新增一张用户表,表 ...
- Thinking in Java---异常处理机制
java的异常处理机制能够使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续运行的问题,,当程序运行时出现异常时,系统就会自己主动生成一个Exception对象来通知 ...
- Unity3D 中鼠标按下时OnMouseDown()、Input.GetMouseButtonDown()和EventType.MouseDown的响应验证
初学unity3D,对于其中的事件响应不是很清楚,于是写了下面的代码来验证: 1.新建.cs文件,名为testMouse.cs: using UnityEngine; using System.Col ...
- wince程序调用另外一个wince exe程序?
记住:要释放句柄 清空内存(当前程序) 在虚拟机下测试如图: 在reyo.ini文件中配置另一wince执行程序的路径,如果不配置程序会报错: 如果配置的程序不存在报错: 没有问题就调用所在位置的wi ...
- Android之仿心跳动画实现
// 按钮模拟心脏跳动 private void playHeartbeatAnimation() { AnimationSet animationSet = new AnimationSet(tru ...
- 用SAX和PULL进行XML文件的解析与生成
XML解析有传统的dom方法还有Jsoup,SAX,PULL等,这里讲的是比较省内存的SAX和PULL方法.Android中极力推荐用PULL的方式来解析,我个人觉得pull确实比较简单,但其内部的逻 ...
- 用ImageSwitcher实现显示图片(更改图片时有动画效果)
ImageView和ImageSwitcher都是用来显示图片的.只不过后者在更新显示的图片的时候可以有动画效果. 注意点: 1.ImageSwitcher初始化需要定义一个ViewFactory,该 ...
- SIFT(Scale-invariant feature transform) & HOG(histogram of oriented gradients)
SIFT :scale invariant feature transform HOG:histogram of oriented gradients 这两种方法都是基于图像中梯度的方向直方图的特征提 ...
- 虚拟机内存复用技术的比较(XEN系统)
技术途径 业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!) :memory overcommit.围绕次问题主要有4种技术手段,下面简要介绍和分析: 1 气泡驱动(ball ...