在学会如何获取帖子之后,我们接下来要做的就是学习如何对数据库记录中的信息进行更新。假设现在程序已经通过获取操作把帖子保存到了readPost
变量里面,那么它应该可以对帖子进行修改,并通过更新操作将这些修改反映至数据库:
readPost.Content = "Bonjour Monde!"
readPost.Author = "Pierre"
readPost.Update()
更新操作可以通过为Post
结构添加Update
方法来实现,代码清单6-10展示了这个方法的具体实现代码。
代码清单6-10 更新一篇帖子
func (post *Post) Update() (err error) {
_, err = Db.Exec("update posts set content = $2, author = $3 where id = $1",
post.Id, post.Content, post.Author)
return
}
跟创建帖子时的做法不同,这次展示的更新操作没有使用预处理语句,而是直接调用sql.DB
结构的Exec
方法。这是因为程序既不需要对接收者进行任何更新,也不需要对方法返回的结果进行扫描scan
,所以它才会选择使用速度更快的Exec
方法来执行查询:
_, err = Db.Exec(post.Id, post.Content, post.Author)
Exec
方法会返回一个sql.Result
和一个可能出现的错误,其中sql.Result
记录的是受查询影响的行的数量以及可能会出现的最后插入id
。因为更新操作对sql.Result
记录的这两项信息都不感兴趣,所以程序会通过将sql.Result
赋值给下划线_
来忽略它。如果一切顺利,没有出现错误,当Exec
执行完毕时,给定的帖子就会被更新。