掌握数据的增删改查之后,就可以做一些小demo,巩固一下基础,让语法更加熟练,所以下面是按照Go web编程里面的文章管理操作,写的一个代码:

package main

import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
) type Article struct {
Id int
Title string
Content string
Author string
CreateTime string
} var db *sql.DB //注意db的类型,声明成全局变量是为了让所有的方法和函数都能使用
var err error //init会在主函数之前执行
func init() {
dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8"
db, err = sql.Open("mysql", dsn)
CheckError(err)
} func CheckError(err interface{}) {
if err != nil {
panic(err)
}
} func (article *Article) AddArticle() bool {
str := "insert into article (title,content,author,create_time) values (?,?,?,?)"
stmt, err := db.Prepare(str)
CheckError(err)
result, err := stmt.Exec(article.Title, article.Content, article.Author, article.CreateTime)
CheckError(err)
if num, _ := result.RowsAffected(); num > 0 {
id, _ := result.LastInsertId()
fmt.Println("Add article", id, " success")
return true
} else {
fmt.Println("Add article", article.Id, " failed")
return false
}
} func (article *Article) DeleteArticle() bool {
str := "delete from article where id=?"
stmt, err := db.Prepare(str)
CheckError(err)
result, err := stmt.Exec(article.Id)
CheckError(err)
if num, _ := result.RowsAffected(); num > 0 {
fmt.Println("delete article", article.Id, " success")
return true
} else {
fmt.Println("delete article", article.Id, " failed")
return false
}
} func GetArticleById(id int) (Article, error) {
article := Article{Id: id}
str := "select title,content,author,create_time from article where id=?"
stmt, err := db.Prepare(str)
CheckError(err)
stmt.QueryRow(id).Scan(&article.Title, &article.Content, &article.Author, &article.CreateTime)
return article, nil
} func GetArticleList(start, offset int) []Article {
var articles []Article
str := "select id,title,content,author,create_time from article limit ?,?"
stmt, _ := db.Prepare(str)
rows, err := stmt.Query(start, offset)
CheckError(err)
for rows.Next() {
article := Article{}
rows.Scan(&article.Id, &article.Title, &article.Content, &article.Author, &article.CreateTime)
articles = append(articles, article)
}
rows.Close()
return articles
} func (article *Article) UpdateArticle() bool {
str := "update article set title=?,content=?,author=?,create_time=? where id=?"
stmt, _ := db.Prepare(str)
result, err := stmt.Exec(article.Title, article.Content, article.Author, article.CreateTime, article.Id)
CheckError(err)
if num, _ := result.RowsAffected(); num > 0 {
return true
} else {
return false
}
} func main() { }

  

  

Go Web --- 创建一个Article的增删改查的更多相关文章

  1. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  2. 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

    此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...

  3. ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { ...

  4. [转]ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本文转自:http://www.cnblogs.com/darrenji/p/4926334.html 本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先 ...

  5. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  6. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  7. day84-仿照admin实现一个自定义的增删改查组件

    一.admin的使用 app01的admin.py文件: class BookConfig(admin.ModelAdmin): list_display=[] list_display_links= ...

  8. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  9. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...

随机推荐

  1. IL范围不正确

    一.昨晚在改过一个bug之后在本机测试没问题,于是提交代码在测试服务器上发布之后测试的也没问题. 既然测试的都没问题,那就要往正式环境中发布咯,然而,发布到正式环境中就报错:IL范围不正确,这个错是打 ...

  2. java学习(权限修饰符)

    Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类. ...

  3. Unity 琐碎5 : 利用反射设置编辑器参数

    问题 最近处理unity资源打包问题时候经常遇到的一个问题就是平台切换和Bundle编译.一般情况下,平台转换我需要依赖Cache Serbver加快转换速度,但是在Build Bundle的时候我又 ...

  4. ES5-ES6-ES7_数值的扩展

    二进制与八进制数值表示法: 二进制用0b, 八进制用0o console.log(0b1010) console.log(0o56) Number.isFinite(i) 判断是否是有限大的数 con ...

  5. P1140 相似基因 这个和之前有一个题目特别像 dp

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了444种核苷酸,简记作A,C,G,TA,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类 ...

  6. 最短路 summary

    有四种类型: 单源:dij,spfa,bellman-ford 多源:floyd dij有两种: 一个复杂度为n^2,一个复杂度是m*logn 畅通工程续 某省自从实行了很多年的畅通工程计划后,终于修 ...

  7. jar包内的文件导出的注意点

    1.截取文件名 windows 和linux 通用 String fp[] = filePath.replaceAll("\\\\","/").split(&q ...

  8. LDAP概念和原理

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  9. SpringBoot实战之SpringBoot自动配置原理

    SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...

  10. [ZJOI2011]礼物

    嘟嘟嘟 正是因为有这样的数据范围,解法才比较暴力. 我们假设取出的长方体常和宽相等,即\(a * a * b\).这样我们每次换两条边相等,搞三次就行. 那么对于第\(k\)层中的第\((i, j)\ ...