Go Web --- 创建一个Article的增删改查
掌握数据的增删改查之后,就可以做一些小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的增删改查的更多相关文章
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
- 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...
- ASP.NET Web API基于OData的增删改查,以及处理实体间关系
本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { ...
- [转]ASP.NET Web API基于OData的增删改查,以及处理实体间关系
本文转自:http://www.cnblogs.com/darrenji/p/4926334.html 本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先 ...
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...
- 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- day84-仿照admin实现一个自定义的增删改查组件
一.admin的使用 app01的admin.py文件: class BookConfig(admin.ModelAdmin): list_display=[] list_display_links= ...
- 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查
本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...
随机推荐
- 真正的Maven经常使用命令
长期用Eclipse的Maven插件的小伙伴可能接触Maven的经常使用命令比較少.每次用每次翻文档. 假设让你脱离Eclipse怎么办,面试的时候考到了怎么办-- 假设你不想尴尬,请小朋友花点时间运 ...
- P2080 增进感情(背包DP)
思路:将好感度x+y作为体积, 幸福度x-y作为作为价值, 然后就是一个经典的背包问题了.emmmmm,还可以特判一下,因为幸福度为0时就是最小了,没有必要看后面的了吧. 其实,我自己做的时候,沙雕的 ...
- 第9章 Java中的线程池 第10章 Exector框架
与新建线程池相比线程池的优点 线程池的分类 ThreadPoolExector参数.执行过程.存储方式 阻塞队列 拒绝策略 10.1 Exector框架简介 10.1.1 Executor框架的两级调 ...
- 【vue】vue-router的用法
依赖安装:(c)npm install vue-router 过程: import Vue from 'vue'; import Router from 'vue-router'; Vue.use(R ...
- 工具 docker
环境配置 软件+环境 虚拟机 资源占用 容器 进程隔离 image(镜像)文件 容器文件 docker hub:仓库 docker container run image_name 挂载: 参考链接 ...
- Android Wear创建一个通知
创建Android Wear的通知实际上和手机上创建没啥区别,主要是多了几个新类,只要用熟悉了一切都好办了.(如果只是测试通知,则直接运行wear app就能够看到效果) 创建一个简单的wear通知分 ...
- 本地搭了http服务(localhost),怎么在vue环境下,通过axios获取到接口数据
1. 找到 vue项目\config\index.js 文件 2. proxyTable: { '/api': { target: 'http://127.0.0.1:9420', changeOri ...
- HotSpot虚拟机对象探秘(对象创建,对象内存布局,对象访问定位)
以常用的HotSpot虚拟机和JAVA内存区域堆为例,探讨对象的创建,对象的内存布局以及对象的访问定位 一.对象的创建 1)类加载:虚拟机遇到一条new指令时,先检测这个指令的参数能否在常量池中定位到 ...
- Android 读取后台数据并显示。模拟小区车辆管理系统
帮别人做的演示系统,只具有基本的增删查改功能. 核心是android端和后台通过http传输数据 后台是asp.net,数据库是ms sql 2008 android端 private void ge ...
- 深入理解Mybatis技术与原理
目录 第1章 Mybatis简介 1.1 传统的JDBC编程 1.2 ORM模型 1.4 MyBatis 1.5 什么时候用MyBatis 第2章 MyBatis入门 2.2 MyBatis构成 2. ...