怎麼獲取beego查詢的的結果,Students這個裡面的結果為啥是初始化的?

heshaofeng發表於2017-05-18
package main

import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"  //引入mysql驅動
    "github.com/astaxie/beego/orm" //對應的beego/orm 可以通過 go get來獲取到本地GOPATH路徑下
    "time"
)

//與資料庫學生表對映的結構體
type studentinfo struct {
    Id          int    `pk:"auto"`
    Stuname     string `orm:"size(20)"`
    Stuidentify string `orm:"size(30)"`
    Stubirth    time.Time
    Stuclass    string `orm:"size(30)"`
    Stumajor    string `orm:"size(30)"`
}
//資料庫連物件需要的資訊
var (
    dbuser string = "root"
    dbpwd  string = "pingan"
    dbname string = "takephoto"
)

var Students []studentinfo
//初始化orm
func init() {
    Students = make([]studentinfo, 10240)
    conn := dbuser + ":" + dbpwd + "@tcp(192.168.1.15:3306)/" + dbname + "?charset=utf8"  // 組合成連線串
    orm.RegisterModel(new(studentinfo))                             // 登錄檔studentinfo 如果沒有會自動建立
    orm.RegisterDriver("mysql", orm.DRMySQL)                        // 註冊mysql驅動
    orm.RegisterDataBase("default", "mysql", conn)                  // 設定conn中的資料庫為預設使用資料庫
    orm.RunSyncdb("default", false, true)                          // 後一個使用true會帶上很多列印資訊,資料庫操作和建表操作的;第二個為true代表強制建立表
}

func main() {
    orm.Debug = true        // true 列印資料庫操作日誌資訊
    dbObj := orm.NewOrm()   // 例項化資料庫操作物件
    time := time.Now().Format("2006-01-02 15:04:05")
    sql := fmt.Sprintf("insert into studentinfo(Id,Stuname, Stuidentify, Stubirth, Stuclass, Stumajor)" +
    " values(1, 'rjx', 'xxx319928xxx', '%s', '信管1班', '資訊管理與資訊系統')", time)
    fmt.Println(sql)
    _, err := dbObj.Raw(sql).Exec()
    if err != nil {
        fmt.Println("插入資料至:t_studentInfo出錯")
    }

    sql = fmt.Sprintf("insert into studentinfo(Id, Stuname, Stuidentify, Stubirth, Stuclass, Stumajor)"+
    " values(2, 'qcy', 'xxx319918xxx', '%s', 'XXX', 'YYYYYY')", time)
    _, err = dbObj.Raw(sql).Exec()
    if err != nil {
        fmt.Println("插入資料至:t_studentInfo出錯")
    }

    //更新資料
    sql = "update studentinfo set Stuname='qcym' where Id = 2"
    _, err = dbObj.Raw(sql).Exec()
    if err != nil {
        fmt.Println("更新t_studentInfo表出錯")
    }

    //通過事務方式來進行資料插入
    err = dbObj.Begin()
    sql = fmt.Sprintf("insert into studentinfo(Id, Stuname, Stuidentify, Stubirth, Stuclass, Stumajor)"+
    " values(3, 'loe', 'xxx319918xxx', '%s', 'zzzz', 'TTTT')", time)
    _, err = dbObj.Raw(sql).Exec()
    if err != nil {
        dbObj.Rollback()
        fmt.Println("插入t_studentInfo表出錯,事務回滾")
    } else {
        dbObj.Commit()
        fmt.Println("插入t_studenInfo表成功,事務提交")
    }

    //查詢資料庫
    sql = "select Id, Stuname, Stuidentify, Stubirth, Stuclass, Stumajor from studentinfo"
    fmt.Println(sql)
    num, er := dbObj.Raw(sql).QueryRows(&Students)
    if er != nil {
        fmt.Println("查詢學生資訊條數出錯")
    } else {
        fmt.Printf("t_studenInfo表中共查詢到記錄:%d\n", num)
        fmt.Printf("students2 is : %v\n", Students)
        for index, _ := range Students {
            fmt.Printf("%d個學生個人資訊:", index + 1)
            fmt.Printf("使用者Id : %d, 姓名 : %s, 身份證號 : %s, 出生日期 : %s, 班級 : %s, 專業 : %s\n", Students[index].Id, Students[index].Stuname, Students[index].Stuidentify, Students[index].Stubirth, Students[index].Stuclass, Students[index].Stumajor)
        }
    }
}
更多原創文章乾貨分享,請關注公眾號
  • 怎麼獲取beego查詢的的結果,Students這個裡面的結果為啥是初始化的?
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章