做了一个简易留言板系统,练练手,用到了7个包,呵呵.以后要多写写东西,这样进步比较快.
main.go
// Golang简易留言板系统 // Author: dotcoo zhao // mysql // CREATE TABLE liuyan ( // id int primary key auto_increment not null, // name varchar(20) not null, // url varchar(100) not null, // content varchar(1000) not null, // time int // ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci; // sqlite3 // CREATE TABLE liuyan ( // id integer primary key autoincrement, // name text, // url text, // content text, // time integer // ); package main import ( "database/sql" "io" "net/http" "strings" "text/template" "time" // "github.com/ziutek/mymysql/godrv" _ "github.com/mattn/go-sqlite3" ) // 留言结构 type Liuyan struct { Id int Name string Url string Content string Time int } // // 显示留言时间 // func (l Liuyan) ShowTime() string { // t := time.Unix(int64(l.Time), 0) // return t.Format("2006-01-02 15:04:05") // } func ShowTime(timeUnix int) string { t := time.Unix(int64(timeUnix), 0) return t.Format("2006-01-02 15:04:05") } // 全局变量 var db *sql.DB var view *template.Template func main() { // godrv.Register("SET NAMES utf8") // 连接数据库 var err error // db, err := sql.Open("mymysql", "tcp:127.0.0.1:3306*go/root/123456") db, err = sql.Open("sqlite3", "./liuyan.db") if err != nil { panic(err) } defer db.Close() // 准备模板 err = LoadTemplate() if err != nil { panic(err) } // 注册处理函数 http.HandleFunc("/load", loadHandler) http.HandleFunc("/", listHandler) http.HandleFunc("/liuyan", liuyanHandler) // 启动服务器 err = http.ListenAndServe(":12345", nil) if err != nil { panic(err) } } // 加载模板 func LoadTemplate() error { // 准备模板函数 funcs := make(template.FuncMap) funcs["showtime"] = ShowTime // 准备模板 v := template.New("view") v.Funcs(funcs) _, err := v.ParseGlob("view/*.htm") if err != nil { return err } view = v return nil } // 动态加载模板 /load func loadHandler(w http.ResponseWriter, req *http.Request) { err := LoadTemplate() if err != nil { http.Error(w, err.Error(), 500) return } io.WriteString(w, `模板加载完成`) } // 显示留言页面 / func listHandler(w http.ResponseWriter, req *http.Request) { // 查询数据 rows, err := db.Query("select * from liuyan") if err != nil { http.Error(w, err.Error(), 500) return } defer rows.Close() // 获取数据 lys := []Liuyan{} for rows.Next() { ly := Liuyan{} err := rows.Scan(&ly.Id, &ly.Name, &ly.Url, &ly.Content, &ly.Time) if nil != err { http.Error(w, err.Error(), 500) return } lys = append(lys, ly) } // 显示数据 err = view.ExecuteTemplate(w, "index.htm", lys) if err != nil { http.Error(w, err.Error(), 500) return } } // 留言页面 /liuyan func liuyanHandler(w http.ResponseWriter, req *http.Request) { if "POST" == req.Method { // 获取参数 name := strings.TrimSpace(req.FormValue("name")) url := strings.TrimSpace(req.FormValue("url")) content := strings.TrimSpace(req.FormValue("content")) // 检查参数 if name == "" || content == "" { io.WriteString(w, "参数错误!\n") return } // sql语句 sql, err := db.Prepare("insert into liuyan(name, url, content, time) values(?, ?, ?, ?)") if err != nil { http.Error(w, err.Error(), 500) return } defer sql.Close() // sql参数,并执行 _, err = sql.Exec(name, url, content, time.Now().Unix()) if err != nil { http.Error(w, err.Error(), 500) return } // 跳转 w.Header().Add("Location", "/") w.WriteHeader(302) // 提示信息 io.WriteString(w, "提交成功!\n") return } // 显示表单 err := view.ExecuteTemplate(w, "liuyan.htm", nil) if err != nil { http.Error(w, err.Error(), 500) return } }
view/index.htm
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <p><a href="/liuyan">给我留言</a></p> <table border="1"> <tr> <th>编号</th><th>姓名</th><th>网址</th><th>内容</th><th>时间</th> </tr> {{range .}} <tr> <td>{{.Id}}</td><td>{{.Name|html}}</td><td><a href="{{.Url}}" target="_blank">{{.Url|html}}</a></td><td>{{.Content|html}}</td><td>{{.Time|showtime}}</td> </tr> {{end}} </table> </body> </html>
view/liuyan.htm
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="post">
姓名:<input type="text" name="name" /><br>
网址:<input type="text" name="url" /><br>
内容:<input type="text" name="content" /><br>
<input type="submit" value="提交" />
</form>
</body>
</html>
http://www.dotcoo.com/golang-mysql-liuyanban
相关推荐
本项目主要探讨的是如何将Gin与MySQL数据库和Redis缓存系统进行整合,构建一个通用的后端脚手架。 首先,我们需要了解Gin框架。Gin基于Martini设计,但性能更优,因为它使用了httprouter,这是一个高性能的路由树,...
golang语言,window系统下安装go语言包安装包 在 Windows 系统下安装 Go 语言包,可以按照以下步骤进行: 下载 Go 语言包 在官网 https://golang.org/dl/ 中下载适合你系统的Go语言包,选择 .msi 安装包下载即可。 ...
在docker上测试golang 使用golang和mysql创建一个最小的开发环境
自用的Go语音连接MySQL数据库的代码,修改一下数据库地址就可直接用
前言 Golang 提供了database/sql包用于对SQL数据库的访问, 作为操作数据库的入口对象sql.DB, 主要为我们提供了两个重要的功能: •sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和...Golang操作mysql数据库
把mysql表里面的字段转换成golang的struct,可以再orm里面使用
该留言板系统是基于go语言来写的,没有前段内容,大概120多行代码,主要实现增、删、改、查功能。是和数据库连接的,用gorm来实现的增、删、改、查这4个小功能。适合新手入门学习。我也是新手,大家一起努力进步。...
Golang Mysql CRUD 这是使用MySQL数据库和Golang的CRUD(创建,读取,更新,删除) 有3个源文件: main.go->用英语评论 main-pt-br.go->葡萄牙语注释-巴西 main-uncommented->没有任何评论 所有代码均以英语编写...
这是一个基于Golang后端和Vue.js前端开发的文件管理系统的源码包。下面将详细介绍这个系统的核心技术和实现原理。 **Golang(Go语言)** Golang是Google开发的一种静态类型、编译型、并发型、垃圾回收的编程语言。...
在本文中,我们将深入探讨如何使用Golang实现MySQL数据库的备份操作。首先,我们需要了解为什么要进行数据库备份,特别是在处理视图及其依赖关系时所遇到的问题。Navicat作为一款常用的MySQL可视化工具,虽然强大,...
### 使用Golang编写操作系统 #### 演讲背景与演讲者介绍 本次演讲来自"Gopher China 2015"大会,演讲者为李四保。演讲者具有丰富的技术背景和创业经历,曾参与银行设备的开发工作以及同花顺移动证券项目。此外,他...
【标题】: "一套golang开发的四方支付系统源码" 这套开源的四方支付系统是用Golang编程语言实现的,Golang,也被称为Go语言,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。它的...
在本文中,我们将深入探讨如何使用Golang来构建一个包含路由转发、MySQL集成以及Redis连接的应用。我们将重点关注Golang的特性,如路由处理、数据库连接、并发处理(goroutines)以及通道(chan)的使用。 首先,让...
Golang支持多种数据库接口,如MySQL、PostgreSQL、MongoDB等,选择哪种数据库需要根据系统需求和性能考虑。 8. **安全性** 系统应确保用户数据的安全,包括但不限于数据加密传输(HTTPS)、防止SQL注入、XSS攻击等...
go-mysqlstack go-mysqlstack是在Go(golang)中实现MySQL协议库。 协议基于mysqlproto-go和go-sql-driver运行测试$ mkdir src $ export GOPATH =`pwd` $ go get -u github.com/xe go-mysqlstack go-mysqlstack是在...
目录网盘文件永久链接 ...第6章统计系统框架构成.rar 第7章统计统之口志费.rar 第8章统计系统之批星解析a 第9章统计系统之统计逻辑,rar 第10统计系统之存储器rar 第11章据可视化证 第12直企业级解方客暴果程总结
本文实例讲述了Go语言实现简单留言板的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:package main import ( // “fmt” “io” “log” “net/http” “text/template” “time” ...
本资料包主要聚焦于`Golang`、`MySQL`和`Redis`这三个核心主题,这些都是现代互联网开发中不可或缺的技术组件。 **Golang** Go语言,又称为Golang,由Google开发,设计时注重简洁、高效和可移植性。它支持并发编程...
GOLANG操作Mysql示例1 官方参考文献地址:https://github.com/go-sql-driver/mysql2 databases.sql文件是新建数据库及其表的schema;3 main.go是golang操作Mysql的脚本示例;4 喜欢这个示例,请点亮小星星并关注我哦!