Go基础编程实践(十)—— 数据库
从数据库中读取数据
在http://sqlitebrowser.org/下载sqlite3可视化工具,在本main.go同目录下创建personal.db数据库,创建表如下:

package main
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
)
// 用struct类型将来自SQL数据库的数据映射到内存中的对象
type Profile struct {
ProfileId int
FirstName string
LastName string
Age int
}
func main() {
db, err := sql.Open("sqlite3", "./personal.db")
checkError(err)
var profile Profile
// Query可以使用参数
rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile where FirstName = ? and LastName = ?", "Tarik", "Guney")
checkError(err)
for rows.Next() {
err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
checkError(err)
fmt.Println(profile)
}
rows.Close()
db.Close()
}
func checkError(err error) {
if err != nil {
panic(err)
}
}
将数据插入数据库
package main
import (
_ "github.com/mattn/go-sqlite3"
"database/sql"
"fmt"
)
type Profile struct{
ProfileId int
FirstName string
LastName string
Age int
}
func main(){
db, err := sql.Open("sqlite3", "./personal.db")
checkError(err)
/* 更新数据库数据
statement, err := db.Prepare("update Profile set FirstName = ? where ProfileId = ?")
checkError(err)
statement.Exec("Martha", 5)
*/
statement, err := db.Prepare("insert into Profile (FirstName, LastName, Age) values(?,?,?)")
checkError(err)
statement.Exec("Jessica", "McArthur", 30)
/* 删除数据库数据
statement ,err := db.Prepare("delete from Profile where ProfileId = ?")
checkError(err)
statement.Exec(3)
*/
var profile Profile
rows, err := db.Query("select ProfileId, FirstName, LastName, Age from Profile")
checkError(err)
for rows.Next(){
err := rows.Scan(&profile.ProfileId, &profile.FirstName, &profile.LastName, &profile.Age)
checkError(err)
fmt.Println(profile)
}
rows.Close()
db.Close()
}
func checkError(err error) {
if (err != nil) {
panic(err)
}
}
Go基础编程实践(十)—— 数据库的更多相关文章
- Go基础编程实践(九)—— 网络编程
下载网页 package main import ( "io/ioutil" "net/http" "fmt" ) func main() ...
- Go基础编程实践(八)—— 系统编程
捕捉信号 // 运行此程序,控制台将打印"Waiting for signal" // 按Ctrl + C 发送信号以关闭程序,将发生中断 // 随后控制台依次打印"Si ...
- Go基础编程实践(七)—— 并发
同时运行多个函数 观察常规代码和并发代码的输出顺序. // 常规代码,顺序执行,依次输出 package main import ( "fmt" "time" ...
- Go基础编程实践(六)—— 文件
检查文件是否存在 在此程序同目录下创建log.txt文件,以检测. package main import ( "os" "fmt" ) func main() ...
- Go基础编程实践(五)—— 错误和日志
自定义错误类型 Go中可以使用errors.New()创建错误信息,也可以通过创建自定义错误类型来满足需求.error是一个接口类型,所有实现该接口的类型都可以当作一个错误类型. // error类型 ...
- Go基础编程实践(四)—— 数组和map
数组去重 package main import "fmt" func main(){ intSlice := []int{1,5,5,5,5,7,8,6,6, 6} fmt.Pr ...
- Go基础编程实践(三)—— 日期和时间
日期和时间 package main import ( "fmt" "time" ) func main() { // 获取当前时间 current := ti ...
- Go基础编程实践(二)—— 类型转换
bool to string strconv包的FormatBool函数用于将bool转为string package main import ( "fmt" "strc ...
- Go基础编程实践(一)—— 操作字符串
修剪空格 strings包中的TrimSpace函数用于去掉字符串首尾的空格. package main import ( "fmt" "strings" ) ...
随机推荐
- linux服务器升级python版本(python2与python3共存)
linux服务器升级python版本 ######################################## 第一步先安装sqlite-devel,因为python2也有这个,python3 ...
- 少女NULL中
NULL inline void read (int &now) { register ; ; !isdigit (word); word = getchar ()) ; + word - ' ...
- limma 包
limma:Linear Models for Microarray and RNA-Seq Data http://www.bioconductor.org/packages/release/bio ...
- Mercurial 的hook使用
1. Handling repository events with hooks可以通过Mercurial版本管理工具提供的hooks机制来处理repo的各种事件,从而实现对Mercurial的扩展, ...
- Oracle数据库备份、灾备的23个常见问题
为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案.在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责) ...
- Python中的日志记录方案-logging模块&loguru模块
原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...
- Centos7下安装ORACLE 11g,弹窗不显示
Centos7下安装ORACLE 11gR2,弹窗不显示,安装界面显示为灰色. 解决方法:执行安装时带上一下参数 ./runInstaller -jreLoc /etc/alternatives/jr ...
- 针对jquery的优化方法,你知道几条
(转)我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 ====================== ...
- 如何使用phantomJS来模拟一个HTML元素的鼠标悬停
如何使用phantomJS来模拟一个HTML元素的鼠标悬停 (How to use phantomJS to simulate mouse hover on a HTML element) 转 htt ...
- Python 技术篇-pip版本查看和升级
一.pip show pip查看pip版本,下面还提示安装命令和pip可以升级到的最新版本. 二.python -m pip install --upgrade pip升级我们的pip