在学会如何获取帖子之后,我们接下来要做的就是学习如何对数据库记录中的信息进行更新。假设现在程序已经通过获取操作把帖子保存到了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执行完毕时,给定的帖子就会被更新。

results matching ""

    No results matching ""