掌握数据的增删改查之后,就可以做一些小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. 真正的Maven经常使用命令

    长期用Eclipse的Maven插件的小伙伴可能接触Maven的经常使用命令比較少.每次用每次翻文档. 假设让你脱离Eclipse怎么办,面试的时候考到了怎么办-- 假设你不想尴尬,请小朋友花点时间运 ...

  2. P2080 增进感情(背包DP)

    思路:将好感度x+y作为体积, 幸福度x-y作为作为价值, 然后就是一个经典的背包问题了.emmmmm,还可以特判一下,因为幸福度为0时就是最小了,没有必要看后面的了吧. 其实,我自己做的时候,沙雕的 ...

  3. 第9章 Java中的线程池 第10章 Exector框架

    与新建线程池相比线程池的优点 线程池的分类 ThreadPoolExector参数.执行过程.存储方式 阻塞队列 拒绝策略 10.1 Exector框架简介 10.1.1 Executor框架的两级调 ...

  4. 【vue】vue-router的用法

    依赖安装:(c)npm install vue-router 过程: import Vue from 'vue'; import Router from 'vue-router'; Vue.use(R ...

  5. 工具 docker

    环境配置 软件+环境 虚拟机 资源占用 容器  进程隔离 image(镜像)文件 容器文件 docker hub:仓库 docker container run image_name 挂载: 参考链接 ...

  6. Android Wear创建一个通知

    创建Android Wear的通知实际上和手机上创建没啥区别,主要是多了几个新类,只要用熟悉了一切都好办了.(如果只是测试通知,则直接运行wear app就能够看到效果) 创建一个简单的wear通知分 ...

  7. 本地搭了http服务(localhost),怎么在vue环境下,通过axios获取到接口数据

    1. 找到 vue项目\config\index.js 文件 2. proxyTable: { '/api': { target: 'http://127.0.0.1:9420', changeOri ...

  8. HotSpot虚拟机对象探秘(对象创建,对象内存布局,对象访问定位)

    以常用的HotSpot虚拟机和JAVA内存区域堆为例,探讨对象的创建,对象的内存布局以及对象的访问定位 一.对象的创建 1)类加载:虚拟机遇到一条new指令时,先检测这个指令的参数能否在常量池中定位到 ...

  9. Android 读取后台数据并显示。模拟小区车辆管理系统

    帮别人做的演示系统,只具有基本的增删查改功能. 核心是android端和后台通过http传输数据 后台是asp.net,数据库是ms sql 2008 android端 private void ge ...

  10. 深入理解Mybatis技术与原理

    目录 第1章 Mybatis简介 1.1 传统的JDBC编程 1.2 ORM模型 1.4 MyBatis 1.5 什么时候用MyBatis 第2章 MyBatis入门 2.2 MyBatis构成 2. ...