原生SQL查詢
type SqlController struct {
beego.Controller
}
#Prepare
sql語句在傳送到伺服器時會做語法檢查和編譯,然而我們多次執行同一功能的sql語句,只是每次傳遞的引數不一致,所以我們可以通過Prepare進行預處理,這樣伺服器只需要,做一次語法檢查和編譯,極大的提高了執行sql語句的效率
func (this *SqlController) GetPrepare() {
//1.建立orm
orm := orm.NewOrm()
p, err := orm.Raw("update user set name = ? where name = ?").Prepare()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
res, err := p.Exec("吳俏祥", "123")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err := res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
res, err = p.Exec("尹成大魔王", "mike")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err = res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
res, err = p.Exec("兄弟連", "asde")
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
n, err = res.RowsAffected()
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
}
fmt.Println("n = ", n)
this.Ctx.WriteString("成功!")
}
#將將指定的欄位解析到map
func (this *SqlController) GetRawsToMap() {
//1.建立map
res := make(orm.Params)
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
//將user表中name作為鍵,nickname作為值存入map中,其中鍵是string型別,
// 如果型別不匹配beego會自動轉換為string型別
/*n, err := orm.Raw("select nickname, name from user").
RowsToMap(&res, "name", "nickname")*/
n, err := orm.Raw("select * from user").RowsToMap(&res, "age", "name")
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("n = ", n)
for key, value := range res {
fmt.Println(key, " = ", value)
}
//6.給客戶端返回資料
this.Ctx.WriteString("查詢成功!")
}
#QueryRows
func (this *SqlController) GetQueryRows(){
//1.建立user切片
var users []*models.User
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
n, err := orm.Raw("select * from user where name = ?", "mike").QueryRows(&users)
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("n = ", n)
for _, user := range users {
fmt.Println("user = ", user)
}
//6.給客戶端返回資料
this.Ctx.WriteString("查詢成功!")
}
#QueryRow
func (this *SqlController) GetQueryRow() {
//1.建立user物件
//user := models.User{}
var user models.User
//2.建立orm
orm := orm.NewOrm()
//3.通過sql語句查詢
err := orm.Raw("select * from user where id = ?", 3).QueryRow(&user)
//4.處理錯誤
if err != nil {
fmt.Println("err = ", err)
this.Ctx.WriteString("查詢出錯!")
return
}
//5.列印結果
fmt.Println("user = ", user)
this.Ctx.WriteString("查詢成功!")
}
#Exec
func (this *SqlController) GetRawAndExec() {
//建立orm
orm := orm.NewOrm()
//raw函式中的引數是sql語句,形式引數通過?佔位,後面提供的實際引數和?的順序一一對應
//Exec()函式的功能是執行sql語句
res, err := orm.Raw("update user set name = ? where id = ?", "admin", 7).Exec()
if err != nil {
this.Ctx.WriteString("查詢失敗!")
return
}
n, err := res.RowsAffected()//查詢受影響的行數
if err != nil {
this.Ctx.WriteString("查詢失敗!")
return
}
this.Ctx.WriteString("mysql row affected nums = " + strconv.Itoa(int(n)))
}
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- SQL查詢的:子查詢和多表查詢SQL
- 【SQL查詢】集合查詢之INTERSECTSQL
- SQL 聚合查詢SQL
- sql 查詢效率SQL
- sql子查詢SQL
- SQL--查詢SQL
- Django筆記二十一之使用原生SQL查詢資料庫Django筆記SQL資料庫
- SQL連線查詢SQL
- SQL高階查詢SQL
- sql常用查詢命令SQL
- SQL查詢總結SQL
- SQL 複雜查詢SQL
- sql: 查詢約束SQL
- SQL複雜查詢SQL
- SQL--子查詢SQL
- (1)SQL 基本查詢SQL
- 提高sql查詢速度SQL
- 查詢oracle效能SQLOracleSQL
- SQL Server 查詢分解SQLServer
- SQL Cookbook—查詢、排序SQL排序
- Native SQL查詢SQL
- 查詢索引 常用SQL索引SQL
- oracle常用SQL查詢OracleSQL
- SQL查詢日曆SQL
- 查詢bad sqlSQL
- TOP N 查詢 SQLSQL
- 常用SQL查詢1SQL
- 提高SQL查詢效能SQL
- SQL查詢優化SQL優化
- SQL查詢效能分析SQL
- sql日期模糊查詢SQL
- MySQL 查詢處理 SQL查詢執行順序MySql
- sql 模糊查詢問題SQL
- SQL慢查詢排查思路SQL
- SQL查詢語句 (Oracle)SQLOracle
- 優化sql查詢速度優化SQL
- 查詢archlog量SQLSQL
- PGA,sga命中sql查詢SQL