apaas.dev
29 October 2022
SEO Title
PostgreSQL与MySQL一样受欢迎,并提供类似的功能。它还提供了一些现成的最佳技术。在这篇文章中,我们将讨论GoLang中的PostgreSQL,并在Go中创建简单的CRUD操作。
使用Go连接到PostgreSQL数据库
这是检查我们是否成功连接的代码。现在,在检查了是否可以继续向表中插入数据之后。
我们需要使用go包管理器安装pq包:
|
package
main
import
(
"database/sql"
"fmt"
_
"github.com/lib/pq"
)
const
(
host =
"localhost"
port =
5432
user =
"postgres"
password =
"<password>"
dbname =
"<dbname>"
)
func main() {
// connection string
psqlconn := fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=disable"
, host, port, user, password, dbname)
// open database
db, err := sql.Open(
"postgres"
, psqlconn)
CheckError(err)
// close database
defer db.Close()
// check db
err = db.Ping()
CheckError(err)
fmt.Println(
"Connected!"
)
}
func CheckError(err error) {
if
err != nil {
panic(err)
}
}
1.将数据插入表格
在这里,首先,我们创建一个简单的表,其中只有两列名称和滚动。现在,要插入或更新数据,我们需要使用预先准备好的语句。这就是数据库操作安全的原因。
package
main
import
(
"database/sql"
"fmt"
_
"github.com/lib/pq"
)
const
(
host =
"localhost"
port =
5432
user =
"postgres"
password =
"rusho1234"
dbname =
"MyDB"
)
func main() {
psqlconn := fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=disable"
, host, port, user, password, dbname)
db, err := sql.Open(
"postgres"
, psqlconn)
CheckError(err)
defer db.Close()
// insert
// hardcoded
insertStmt := `insert into
"Students"
(
"Name"
,
"Roll"
) values(
'John'
,
1
)`
_, e := db.Exec(insertStmt)
CheckError(e)
// dynamic
insertDynStmt := `insert into
"Students"
(
"Name"
,
"Roll"
) values($
1
, $
2
)`
_, e = db.Exec(insertDynStmt,
"Jane"
,
2
)
CheckError(e)
}
func CheckError(err error) {
if
err != nil {
panic(err)
}
}
2.更新表中的数据
更新数据需要执行更新语句。以下是准备好的声明:
// update
updateStmt := `update
"Students"
set
"Name"
=$
1
,
"Roll"
=$
2
where
"id"
=$
3
`
_, e := db.Exec(updateStmt,
"Mary"
,
3
,
2
)
CheckError(e)
3.从表中删除数据
删除数据也像更新一样简单:
// Delete
deleteStmt := `delete from
"Students"
where id=$
1
`
_, e := db.Exec(deleteStmt,
1
)
CheckError(e)
4.通过select获取数据
现在,我们将从表中查询数据。我们只需像以前的操作一样执行所需的操作。然后我们对返回的每一行进行迭代并检查数据。下面是我们的方法。
rows, err := db.Query(`SELECT
"Name"
,
"Roll"
FROM
"Students"
`)
CheckError(err)
defer rows.Close()
for
rows.Next() {
var name string
var roll
int
err = rows.Scan(&name, &roll)
CheckError(err)
fmt.Println(name, roll)
}
CheckError(err)
如图所示,数据完全返回。
这就是我们如何在GoLang中使用PostgreSQL创建CRUD操作
- 登录 发表评论