本文整理汇总了Golang中github.com/jmoiron/sqlx.Tx.QueryRow方法的典型用法代码示例。如果您正苦于以下问题:Golang Tx.QueryRow方法的具体用法?Golang Tx.QueryRow怎么用?Golang Tx.QueryRow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/jmoiron/sqlx.Tx
的用法示例。
在下文中一共展示了Tx.QueryRow方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SetTranslations
func (d *Database) SetTranslations(tx *sqlx.Tx, field string, translations []struct {
Lang_Isocode string
Text string
}) (err error) {
// Check if translation entry exists for this database and this lang
var transID int
for _, tr := range translations {
err = tx.QueryRow("SELECT count(database_id) FROM database_tr WHERE database_id = $1 AND lang_isocode = $2", d.Id, tr.Lang_Isocode).Scan(&transID)
if transID == 0 {
_, err = tx.Exec("INSERT INTO database_tr (database_id, lang_isocode, description, geographical_limit, bibliography, context_description, source_description, source_relation, copyright, subject) VALUES ($1, $2, '', '', '', '', '', '', '', '')", d.Id, tr.Lang_Isocode)
if err != nil {
err = errors.New("database::SetTranslations: " + err.Error())
}
}
if tr.Text != "" {
_, err = tx.Exec("UPDATE database_tr SET "+field+" = $1 WHERE database_id = $2 and lang_isocode = $3", tr.Text, d.Id, tr.Lang_Isocode)
}
}
if err != nil {
err = errors.New("database::SetTranslations: " + err.Error())
}
return
}
示例2: InsertIntoTable
func (b *Base) InsertIntoTable(tx *sqlx.Tx, data map[string]interface{}) (sql.Result, error) {
if b.table == "" {
return nil, errors.New("Table must not be empty.")
}
tx, wrapInSingleTransaction, err := b.newTransactionIfNeeded(tx)
if tx == nil {
return nil, errors.New("Transaction struct must not be empty.")
}
if err != nil {
return nil, err
}
keys := make([]string, 0)
dollarMarks := make([]string, 0)
values := make([]interface{}, 0)
loopCounter := 1
for key, value := range data {
keys = append(keys, key)
dollarMarks = append(dollarMarks, fmt.Sprintf("$%v", loopCounter))
values = append(values, value)
loopCounter++
}
query := fmt.Sprintf(
"INSERT INTO %v (%v) VALUES (%v)",
b.table,
strings.Join(keys, ","),
strings.Join(dollarMarks, ","))
result := &InsertResult{}
result.rowsAffected = 1
if b.hasID {
query = query + " RETURNING id"
var lastInsertId int64
err = tx.QueryRow(query, values...).Scan(&lastInsertId)
if err != nil {
return nil, err
}
result.lastInsertId = lastInsertId
} else {
_, err := tx.Exec(query, values...)
if err != nil {
return nil, err
}
}
if wrapInSingleTransaction == true {
err = tx.Commit()
}
return result, err
}
示例3: SetTranslations
// SetTranslation set translations !
func (u *Shapefile) SetTranslations(tx *sqlx.Tx, field string, translations []struct {
Lang_Isocode string
Text string
}) (err error) {
// Check if translation entry exists for this shapefile and this lang
var transID int
for _, tr := range translations {
err = tx.QueryRow("SELECT count(shapefile_id) FROM shapefile_tr WHERE shapefile_id = $1 AND lang_isocode = $2", u.Id, tr.Lang_Isocode).Scan(&transID)
if transID == 0 {
_, err = tx.Exec("INSERT INTO shapefile_tr (shapefile_id, lang_isocode, name, attribution, copyright, description) VALUES ($1, $2, '', '', '', '')", u.Id, tr.Lang_Isocode)
if err != nil {
return
}
}
if tr.Text != "" {
_, err = tx.Exec("UPDATE shapefile_tr SET "+field+" = $1 WHERE shapefile_id = $2 and lang_isocode = $3", tr.Text, u.Id, tr.Lang_Isocode)
}
}
return
}