本文整理汇总了Golang中mysql.Client类的典型用法代码示例。如果您正苦于以下问题:Golang Client类的具体用法?Golang Client怎么用?Golang Client使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Client类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: loadFromSQL
// Load SDB DB score data for territory ts.uid.
func loadFromSQL(db *mysql.Client, ts *territoryScore) {
query := "SELECT TScoreTotal,TScoreBalance,TScoreTime,name FROM avatars WHERE ID='" + fmt.Sprint(ts.uid) + "'"
stmt, err := db.Prepare(query)
if err != nil {
log.Println(err)
return
}
// Execute statement
err = stmt.Execute()
if err != nil {
log.Println(err)
return
}
var terrScore, terrScoreBalance float64
var terrScoreTimestamp uint32
var name string
stmt.BindResult(&terrScore, &terrScoreBalance, &terrScoreTimestamp, &name)
for {
eof, err := stmt.Fetch()
if err != nil {
log.Println(err)
return
}
if eof {
break
}
}
numChunks := countChunks(db, ts.uid)
Initialize(ts.uid, terrScore, terrScoreBalance, terrScoreTimestamp, name, numChunks)
}
示例2: UpdateTroll
// met à jour un compte en BD, sans les infos de gestion (comme le mdp)
func (store *MysqlStore) UpdateTroll(db *mysql.Client, c *Compte) (err os.Error) {
t := c.Troll
if t == nil {
fmt.Println("Compte sans données de troll")
return
}
updateProfil := t.ProchainTour > 0 // on ne met pas toujours tout à jour
sql := "update compte set"
sql += " x=?, y=?, z=?"
if updateProfil {
sql += " ,pv_max=?, pv_actuels=?, fatigue=?, pa=?, vue=?, prochain_tour=?, duree_tour=?, mise_a_jour=?"
}
sql += " where id=?"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
if updateProfil {
err = stmt.BindParams(t.X, t.Y, t.Z, t.PV_max, t.PV_actuels, t.Fatigue, t.PA, t.Vue, (t.ProchainTour / 1000), t.DureeTour, time.Seconds(), c.trollId)
} else {
err = stmt.BindParams(t.X, t.Y, t.Z, c.trollId)
}
if err != nil {
return
}
err = stmt.Execute()
return
}
示例3: InsertAction
// stocke une action en BD (résultat de sort ou de frappe ou compétence, à l'exclusion des CDM)
func (store *MysqlStore) InsertAction(db *mysql.Client, a *Action) (err error) {
// on corrige
if a.Degats > 0 && a.PV == 0 {
a.PV = a.Degats
}
a.Type = AsciiToUTF8([]uint8(a.Type))
sql := "insert into action"
sql += " (date_action, type_action, auteur, type_cible, num_cible, succes, degats, pv, esquive)"
sql += " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?)"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
succès := "non"
if a.Succes {
succès = "oui"
}
err = stmt.BindParams(a.Date, a.Type, a.Auteur, a.TypeCible, a.NumCible, succès, a.Degats, a.PV, a.Esquive)
if err != nil {
return
}
err = stmt.Execute()
if err != nil {
return
}
return
}
示例4: UpdatePartage
// modifie un partage
// est-ce qu'on pourrait faire ça en une seule requête ?
func (store *MysqlStore) UpdatePartage(db *mysql.Client, troll uint, autreTroll uint, statut string) (err error) {
sql := "update partage set statut_a=? where troll_a=? and troll_b=?"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
err = stmt.BindParams(statut, troll, autreTroll)
if err != nil {
return
}
err = stmt.Execute()
if err != nil {
return
}
sql = "update partage set statut_b=? where troll_a=? and troll_b=?"
stmt2, err := db.Prepare(sql)
defer stmt.FreeResult()
if err != nil {
return
}
err = stmt2.BindParams(statut, autreTroll, troll)
if err != nil {
return
}
err = stmt2.Execute()
return
}
示例5: GetCompte
// lit un compte en base. Renvoie nil si le compte n'existe pas en base.
// Sinon l'appelant est responsable de l'ouverture et de la fermeture de la connexion qu'il fournit
func (store *MysqlStore) GetCompte(db *mysql.Client, trollId uint) (c *Compte, err os.Error) {
if trollId == 0 {
fmt.Println("GetCompte> trollId invalide")
return
}
sql := "select statut, mdp_restreint, pv_max, pv_actuels, x, y, z, fatigue, pa, vue, prochain_tour, duree_tour, mise_a_jour"
sql += " from compte where id=" + strconv.Uitoa(trollId)
err = db.Query(sql)
if err != nil {
return
}
result, err := db.UseResult()
if err != nil {
return
}
defer result.Free()
row := result.FetchRow()
if row == nil {
return
}
c = rowToCompte(trollId, row)
return
}
示例6: GetPartageurs
// renvoie la liste des trolls avec qui le troll passé a un partage actif
func (store *MysqlStore) GetPartageurs(db *mysql.Client, trollId int) ([]int, error) {
st := strconv.Itoa(trollId)
sql := "select troll_a, troll_b from partage where (troll_a=" + st + " or troll_b=" + st + ") and statut_a='on' and statut_b='on'"
err := db.Query(sql)
if err != nil {
return nil, err
}
result, err := db.UseResult()
if err != nil {
return nil, err
}
defer result.Free()
amis := make([]int, 0, 5)
for {
row := result.FetchRow()
if row == nil {
break
}
r0 := fieldAsInt(row[0])
r1 := fieldAsInt(row[1])
if r0 == trollId {
amis = append(amis, r1)
} else {
amis = append(amis, r0)
}
}
return amis, nil
}
示例7: SaveNote
// stocke une note en BD
func (store *MysqlStore) SaveNote(db *mysql.Client, note *Note) error {
if note.Id > 0 {
// update
// TODO utiliser comme clef l'id ET l'auteur, par sécurité (qu'on ne puisse pas effacer une note de quelqu'un d'autre) (pareil pour le delete)
fmt.Println("update de note")
} else {
// insert
sql := "insert into note (auteur, type_sujet, id_sujet, x_sujet, y_sujet, z_sujet, partage, date_changement, contenu, diplo)"
sql += " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
stmt, err := db.Prepare(sql)
if err != nil {
return err
}
defer stmt.FreeResult()
seconds := time.Seconds()
err = stmt.BindParams(note.Auteur, note.TypeSujet, note.IdSujet, note.XSujet, note.YSujet, note.ZSujet, note.Partage, seconds, note.Contenu, note.Diplo)
if err != nil {
fmt.Printf("Erreur stockage (in) note : %s\n", err.Error()) // FIXME l'erreur ne semble pas retransmise ???
return err
}
err = stmt.Execute()
if err != nil {
return err
}
}
return nil
}
示例8: GetAllPartages
// récupère toutes les infos de partage, acceptés ou non, impliquant un troll
func (store *MysqlStore) GetAllPartages(db *mysql.Client, trollId uint) (partages []*Partage, err error) {
sql := "select troll_a, troll_b, statut_a, statut_b from partage where troll_a=? or troll_b=?"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
err = stmt.BindParams(trollId, trollId)
if err != nil {
return
}
err = stmt.Execute()
if err != nil {
return
}
r := new(Partage)
stmt.BindResult(&r.TrollA, &r.TrollB, &r.StatutA, &r.StatutB)
partages = make([]*Partage, 0, 10)
for {
eof, _err := stmt.Fetch()
if _err != nil || eof {
return partages, _err
}
p := &Partage{r.TrollA, r.TrollB, r.StatutA, r.StatutB} // on dirait qu'on ne peut pas dupliquer l'objet plus simplement
partages = append(partages, p)
}
return
}
示例9: DeletePartage
func (store *MysqlStore) DeletePartage(db *mysql.Client, troll uint, autreTroll uint) (err error) {
sql := "delete from partage where (troll_a=? and troll_b=?) or (troll_b=? and troll_a=?)"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
err = stmt.BindParams(troll, autreTroll, troll, autreTroll)
if err != nil {
return
}
err = stmt.Execute()
return
}
示例10: MySQLNewConnection
func MySQLNewConnection(sock string, user string, password string, database string) (Connection, os.Error) {
var err os.Error
var db *mysql.Client
db, err = mysql.DialUnix(sock, user, password, database)
if err != nil {
err = db.Close()
return nil, err
}
conn := new(MySQL)
conn.Database = database
conn.db = db
return conn, err
}
示例11: CleanAndSaveSoapItems
// supprime la vue de trollID puis sauvegarde des observations reçues par SOAP de MH, observées juste maintenant par trollId
func (store *MysqlStore) CleanAndSaveSoapItems(db *mysql.Client, trollId uint, items []*SoapItem) (err error) {
seconds := time.Seconds()
sql := "delete from observation where auteur=" + strconv.Uitoa(trollId)
stmt, err := db.Prepare(sql)
if err != nil {
return
}
err = stmt.Execute()
if err != nil {
return
}
stmt.FreeResult() // nécessaire ?
sql = "insert into observation"
sql += " (auteur, num, date, type, nom, x, y, z)"
sql += " values ( ?, ?, ?, ?, ?, ?, ?, ?)"
stmt, err = db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
for _, i := range items {
//~ fmt.Printf(" saving %+v\n", i)
var t string
if i.Type == "TROLL" {
t = "troll"
} else if i.Type == "MONSTRE" {
t = "monstre"
} else if i.Type == "LIEU" {
t = "lieu"
} else if i.Type == "TRESOR" {
t = "tresor"
} else {
continue
}
err = stmt.BindParams(trollId, i.Numero, seconds, t, i.Nom, i.PositionX, i.PositionY, i.PositionN)
if err != nil {
return
}
err = stmt.Execute()
}
return
}
示例12: ObservationsAutour
func (store *MysqlStore) ObservationsAutour(db *mysql.Client, x int, y int, z int, dist int, trollId int, amis []int, withTresors bool) (observations []*Observation, err os.Error) {
sql := "select auteur, num, date, type, nom, x, y, z from observation where"
sql += " x>" + strconv.Itoa(x-dist-1) + " and x<" + strconv.Itoa(x+dist+1)
sql += " and y>" + strconv.Itoa(y-dist-1) + " and y<" + strconv.Itoa(y+dist+1)
sql += " and z>" + strconv.Itoa(z-dist/2-1) + " and z<" + strconv.Itoa(z+dist/2+1)
if !withTresors {
sql += " and type<>'tresor'"
}
sql += " and auteur in (" + strconv.Itoa(trollId)
for _, id := range amis {
sql += "," + strconv.Itoa(id)
}
sql += ") order by type, num, date desc"
fmt.Println("SQL : ", sql)
stmt, err := db.Prepare(sql)
defer stmt.FreeResult()
if err != nil {
return
}
err = stmt.Execute()
if err != nil {
return
}
r := new(Observation)
stmt.BindResult(&r.Auteur, &r.Num, &r.Date, &r.Type, &r.Nom, &r.X, &r.Y, &r.Z)
observations = make([]*Observation, 0, 20)
for {
eof, err := stmt.Fetch()
if err != nil || eof {
return
}
//fmt.Printf("r : %+v\n", r)
if len(observations) > 0 && r.Num == observations[len(observations)-1].Num {
continue
}
o := &Observation{r.Auteur, r.Num, r.Type, r.Date, r.Nom, r.X, r.Y, r.Z}
observations = append(observations, o)
}
return
}
示例13: saveToSQL
func saveToSQL(db *mysql.Client, ts *territoryScore) {
ts.modified = false
query := "UPDATE avatars SET TScoreTotal=?,TScoreBalance=?,TScoreTime=? WHERE ID='" + fmt.Sprint(ts.uid) + "'"
stmt, err := db.Prepare(query)
if err != nil {
log.Println(err)
return
}
stmt.BindParams(ts.Score, ts.ScoreBalance, ts.TimeStamp.Unix())
err = stmt.Execute()
if err != nil {
log.Println(err)
return
}
}
示例14: SearchObservations
func (store *MysqlStore) SearchObservations(db *mysql.Client, tok string, trollId int, amis []int) (observations []*Observation, err error) {
sql := "select auteur, num, date, type, nom, x, y, z from observation where"
if num, _ := strconv.Atoi(tok); num != 0 {
sql += " num=" + tok
} else {
sql += " nom like '%" + tok + "%'"
}
sql += " and auteur in (" + strconv.Itoa(trollId)
for _, id := range amis {
sql += "," + strconv.Itoa(id)
}
sql += ") order by num, date desc limit 100"
fmt.Println("SQL : ", sql)
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
err = stmt.Execute()
if err != nil {
return
}
r := new(Observation)
stmt.BindResult(&r.Auteur, &r.Num, &r.Date, &r.Type, &r.Nom, &r.X, &r.Y, &r.Z)
observations = make([]*Observation, 0, 20)
for {
eof, _err := stmt.Fetch()
if _err != nil || eof {
return observations, _err
}
if len(observations) > 0 && r.Num == observations[len(observations)-1].Num { // dédoublonnage
continue
}
o := &Observation{r.Auteur, r.Num, r.Type, r.Date, r.Nom, r.X, r.Y, r.Z}
observations = append(observations, o)
}
return
}
示例15: InsertPartage
// sauvegarde un nouveau partage (à l'état de proposition de a pour b)
func (store *MysqlStore) InsertPartage(db *mysql.Client, trollA uint, trollB uint) (err error) {
sql := "insert ignore into"
sql += " partage (troll_a, troll_b)"
sql += " values ( ?, ?)"
stmt, err := db.Prepare(sql)
if err != nil {
return
}
defer stmt.FreeResult()
err = stmt.BindParams(trollA, trollB)
if err != nil {
return
}
err = stmt.Execute()
return
}