一、連接數(shù)據(jù)庫

sqlx庫連接數(shù)據(jù)庫
對比sql庫的初始化:

sql庫連接數(shù)據(jù)庫
發(fā)現(xiàn)sqlx庫的相當于是把sql庫的Open方法、Ping方法結合到了一個Connect方法中。
二、增刪改查

增

刪

改

查
需要注意的是,我們定義的user結構體中字段名稱的首字母都需要大寫,因為db.Get()方法是其他包中的。這里也要注意db.Get()方法中需要傳結構體的指針。
三、NameExec()方法
有時候如果sql語句中的占位符過多,后面我們傳參容易傳錯。因此有個準確度高的方法如下:

NameExec()方法
即現(xiàn)在sql語句中用":變量名"的方式替代原來的"?"占位符,之后調用NameExec()方法傳入map類型的參數(shù),有準確的對應關系,以防止出錯。
四、sqlx.In()方法
sqlx.In()是sqlx提供的一個非常方便的函數(shù)。
1、綁定變量
查詢占位符"?"在內部稱為bindvars(查詢占位符),它非常重要。你應該始終使用它們向數(shù)據(jù)庫發(fā)送值,因為它們可以防止SQL注入攻擊。database/sql不嘗試對查詢文本進行任何驗證;它與編碼的參數(shù)一起按原樣發(fā)送到服務器。除非驅動程序實現(xiàn)一個特殊的接口,否則在執(zhí)行之前,查詢是在服務器上準備的。因此bindvars是特定于數(shù)據(jù)庫的:
MySQL中使用?
PostgreSQL使用枚舉的$1、$2等bindvar語法
SQLite中?和$1的語法都支持
Oracle中使用:name的語法
bindvars的一個常見誤解是,它們用來在sql語句中插入值。它們其實僅用于參數(shù)化,不允許更改SQL語句的結構。例如,使用bindvars嘗試參數(shù)化列或表名將不起作用:

一些錯誤使用