@@ -6,15 +6,11 @@ import (
66 "database/sql"
77 "log"
88 "strings"
9-
10- _ "github.com/go-sql-driver/mysql"
11- "github.com/jmoiron/sqlx"
129)
1310
1411var (
1512 ctx context.Context
1613 db * sql.DB
17- dbx * sqlx.DB
1814 age = 27
1915 userID = 43
2016)
@@ -259,84 +255,3 @@ func stmtReturn() (*sql.Stmt, error) {
259255func stmtReturnShort () (* sql.Stmt , error ) {
260256 return db .PrepareContext (ctx , "SELECT username FROM users WHERE id = ?" )
261257}
262-
263- func sqlxCorrectDefer () {
264- rows , err := dbx .Queryx ("SELECT name FROM users WHERE age=?" , age )
265- if err != nil {
266- log .Fatal (err )
267- }
268-
269- defer rows .Close ()
270-
271- names := make ([]string , 0 )
272- for rows .Next () {
273- var name string
274- if err := rows .Scan (& name ); err != nil {
275- log .Fatal (err )
276- }
277- names = append (names , name )
278- }
279-
280- // Check for errors from iterating over rows.
281- if err := rows .Err (); err != nil {
282- log .Fatal (err )
283- }
284- log .Printf ("%s are %d years old" , strings .Join (names , ", " ), age )
285- }
286-
287- func sqlxNonDeferClose () {
288- rows , err := dbx .Queryx ("SELECT name FROM users WHERE age=?" , age )
289- if err != nil {
290- log .Fatal (err )
291- }
292-
293- names := make ([]string , 0 )
294- for rows .Next () {
295- var name string
296- if err := rows .Scan (& name ); err != nil {
297- log .Fatal (err )
298- }
299- names = append (names , name )
300- }
301-
302- // Check for errors from iterating over rows.
303- if err := rows .Err (); err != nil {
304- log .Fatal (err )
305- }
306- log .Printf ("%s are %d years old" , strings .Join (names , ", " ), age )
307-
308- rows .Close () // ERROR "Close should use defer"
309- }
310-
311- func sqlxMissingClose () {
312- rows , err := dbx .Queryx ("SELECT name FROM users WHERE age=?" , age ) // ERROR "Rows/Stmt was not closed"
313- if err != nil {
314- log .Fatal (err )
315- }
316-
317- // defer rows.Close()
318-
319- names := make ([]string , 0 )
320- for rows .Next () {
321- var name string
322- if err := rows .Scan (& name ); err != nil {
323- log .Fatal (err )
324- }
325- names = append (names , name )
326- }
327-
328- // Check for errors from iterating over rows.
329- if err := rows .Err (); err != nil {
330- log .Fatal (err )
331- }
332- log .Printf ("%s are %d years old" , strings .Join (names , ", " ), age )
333- }
334-
335- func sqlxReturnRows () (* sqlx.Rows , error ) {
336- rows , err := dbx .Queryx ("SELECT name FROM users WHERE age=?" , age )
337- if err != nil {
338- return nil , err
339- }
340-
341- return rows , nil
342- }
0 commit comments