|
@@ -315,6 +315,44 @@ func (d *DB) SelectContext(ctx context.Context, dest interface{}, query string,
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Query get rows with named args, Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
|
|
|
|
+func (d *DB) Query(dest interface{}, query string, args interface{}) error {
|
|
|
|
+ err := d.Connect()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer d.Close()
|
|
|
|
+
|
|
|
|
+ nstmt, err := d.conn.PrepareNamed(query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.Select(dest, args)
|
|
|
|
+
|
|
|
|
+ return err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// QueryContext get rows with named args, QueryContext executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
|
|
|
|
+func (d *DB) QueryContext(ctx context.Context, dest interface{}, query string, args interface{}) error {
|
|
|
|
+ err := d.ConnectContext(ctx)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer d.Close()
|
|
|
|
+
|
|
|
|
+ nstmt, err := d.conn.PrepareNamedContext(ctx, query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.SelectContext(ctx, dest, args)
|
|
|
|
+
|
|
|
|
+ return err
|
|
|
|
+}
|
|
|
|
+
|
|
// Rows get rows with named args
|
|
// Rows get rows with named args
|
|
func (d *DB) Rows(dest interface{}, query string, args interface{}) error {
|
|
func (d *DB) Rows(dest interface{}, query string, args interface{}) error {
|
|
err := d.Connect()
|
|
err := d.Connect()
|
|
@@ -353,17 +391,37 @@ func (d *DB) RowsContext(ctx context.Context, dest interface{}, query string, ar
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
-// Get get
|
|
|
|
-func (d *DB) Get(dest interface{}, query string, args ...interface{}) error {
|
|
|
|
|
|
+// QueryRow get row, QueryRow executes a query that is expected to return at most one row.
|
|
|
|
+func (d *DB) QueryRow(dest interface{}, query string, args ...interface{}) error {
|
|
err := d.Connect()
|
|
err := d.Connect()
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
defer d.Close()
|
|
defer d.Close()
|
|
|
|
|
|
- err = d.conn.Get(dest, query, args...)
|
|
|
|
|
|
+ return d.conn.Get(dest, query, args...)
|
|
|
|
+}
|
|
|
|
|
|
- return err
|
|
|
|
|
|
+// QueryRowContext get row, QueryRowContext executes a query that is expected to return at most one row.
|
|
|
|
+func (d *DB) QueryRowContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error {
|
|
|
|
+ err := d.ConnectContext(ctx)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer d.Close()
|
|
|
|
+
|
|
|
|
+ return d.conn.GetContext(ctx, dest, query, args...)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Get get row, QueryRow executes a query that is expected to return at most one row.
|
|
|
|
+func (d *DB) Get(dest interface{}, query string, args ...interface{}) error {
|
|
|
|
+ err := d.Connect()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer d.Close()
|
|
|
|
+
|
|
|
|
+ return d.conn.Get(dest, query, args...)
|
|
}
|
|
}
|
|
|
|
|
|
// GetContext get
|
|
// GetContext get
|
|
@@ -374,9 +432,7 @@ func (d *DB) GetContext(ctx context.Context, dest interface{}, query string, arg
|
|
}
|
|
}
|
|
defer d.Close()
|
|
defer d.Close()
|
|
|
|
|
|
- err = d.conn.GetContext(ctx, dest, query, args...)
|
|
|
|
-
|
|
|
|
- return err
|
|
|
|
|
|
+ return d.conn.GetContext(ctx, dest, query, args...)
|
|
}
|
|
}
|
|
|
|
|
|
// Row get row with named args
|
|
// Row get row with named args
|
|
@@ -393,9 +449,7 @@ func (d *DB) Row(dest interface{}, query string, args interface{}) error {
|
|
}
|
|
}
|
|
defer nstmt.Close()
|
|
defer nstmt.Close()
|
|
|
|
|
|
- err = nstmt.Get(dest, args)
|
|
|
|
-
|
|
|
|
- return err
|
|
|
|
|
|
+ return nstmt.Get(dest, args)
|
|
}
|
|
}
|
|
|
|
|
|
// RowContext get row with named args
|
|
// RowContext get row with named args
|
|
@@ -412,9 +466,7 @@ func (d *DB) RowContext(ctx context.Context, dest interface{}, query string, arg
|
|
}
|
|
}
|
|
defer nstmt.Close()
|
|
defer nstmt.Close()
|
|
|
|
|
|
- err = nstmt.GetContext(ctx, dest, args)
|
|
|
|
-
|
|
|
|
- return err
|
|
|
|
|
|
+ return nstmt.GetContext(ctx, dest, args)
|
|
}
|
|
}
|
|
|
|
|
|
// InsertReply insert and return DbReply
|
|
// InsertReply insert and return DbReply
|
|
@@ -572,8 +624,8 @@ func (t *Tx) Rollback() error {
|
|
return t.tx.Rollback()
|
|
return t.tx.Rollback()
|
|
}
|
|
}
|
|
|
|
|
|
-// TransExec trans execute with named args
|
|
|
|
-func (t *Tx) TransExec(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) {
|
|
|
|
|
|
+// Exec executes a query that doesn't return rows. For example: an INSERT and UPDATE.
|
|
|
|
+func (t *Tx) Exec(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) {
|
|
if rs, err := t.tx.NamedExec(query, args); err == nil {
|
|
if rs, err := t.tx.NamedExec(query, args); err == nil {
|
|
RowsAffected, _ = rs.RowsAffected()
|
|
RowsAffected, _ = rs.RowsAffected()
|
|
LastInsertId, _ = rs.LastInsertId()
|
|
LastInsertId, _ = rs.LastInsertId()
|
|
@@ -614,6 +666,40 @@ func Select(dest interface{}, query string, args ...interface{}) (err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Query get rows with named args
|
|
|
|
+func Query(dest interface{}, query string, args interface{}) (err error) {
|
|
|
|
+ defaultDB.conn, err = connect()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ nstmt, err := defaultDB.conn.PrepareNamed(query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.Select(dest, args)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// QueryContext get rows with named args
|
|
|
|
+func QueryContext(ctx context.Context, dest interface{}, query string, args interface{}) (err error) {
|
|
|
|
+ defaultDB.conn, err = connectContext(ctx)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ nstmt, err := defaultDB.conn.PrepareNamedContext(ctx, query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.SelectContext(ctx, dest, args)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// Rows get rows with named args
|
|
// Rows get rows with named args
|
|
func Rows(dest interface{}, query string, args interface{}) (err error) {
|
|
func Rows(dest interface{}, query string, args interface{}) (err error) {
|
|
defaultDB.conn, err = connect()
|
|
defaultDB.conn, err = connect()
|
|
@@ -659,6 +745,40 @@ func Get(dest interface{}, query string, args ...interface{}) (err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// QueryRow get row with named args
|
|
|
|
+func QueryRow(dest interface{}, query string, args interface{}) (err error) {
|
|
|
|
+ defaultDB.conn, err = connect()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ nstmt, err := defaultDB.conn.PrepareNamed(query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.Get(dest, args)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// QueryRowContext get row with named args
|
|
|
|
+func QueryRowContext(ctx context.Context, dest interface{}, query string, args interface{}) (err error) {
|
|
|
|
+ defaultDB.conn, err = connectContext(ctx)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ nstmt, err := defaultDB.conn.PrepareNamedContext(ctx, query)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer nstmt.Close()
|
|
|
|
+
|
|
|
|
+ err = nstmt.GetContext(ctx, dest, args)
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// Row get row with named args
|
|
// Row get row with named args
|
|
func Row(dest interface{}, query string, args interface{}) (err error) {
|
|
func Row(dest interface{}, query string, args interface{}) (err error) {
|
|
defaultDB.conn, err = connect()
|
|
defaultDB.conn, err = connect()
|