You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package codeforcesbot
import (
"database/sql"
"fmt"
"strings"
_ "github.com/lib/pq"
)
var db *sql.DB
func SqlOpen() {
var err error
db, err = sql.Open("postgres", "port=5432 user=postgres password=postgres dbname=codeforcesbotdb sslmode=disable")
//port是数据库的端口号默认是5432如果改了这里一定要自定义
//user就是你数据库的登录帐号;
//dbname就是你在数据库里面建立的数据库的名字;
//sslmode就是安全验证模式;
//还可以是这种方式打开
//db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full")
CheckErr(err)
}
func SqlInsertCFid(qqid int64, cfid string) string{
//插入数据
stmt, err := db.Prepare("INSERT INTO codeforcesId(qqid, cfid) VALUES($1,$2)")
CheckErr(err)
res, err := stmt.Exec(qqid, cfid)
if err != nil {
return err.Error()
}
affect, err := res.RowsAffected()
CheckErr(err)
return fmt.Sprintf("OK rows affect:", affect)
}
func SqlQueryHandles(qqid int64) (ret []string){
rows, err := db.Query(fmt.Sprintf("SELECT cfid FROM codeforcesid WHERE qqid = %v", qqid))
CheckErr(err)
for rows.Next() {
var handle string
CheckErr(rows.Scan(&handle))
ret = append(ret, strings.TrimSpace(handle))
}
return ret
}
func SqlGetNotifiedGroup() (groups []int64) {
rows, err := db.Query("SELECT groupid FROM codeforcesnotify")
CheckErr(err)
for rows.Next() {
var groupid int64
CheckErr(rows.Scan(&groupid))
groups = append(groups, groupid)
}
return groups
}
/*
func sqlSelect() {
//查询数据
rows, err := db.Query("SELECT * FROM userinfo")
CheckErr(err)
println("-----------")
for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(&uid, &username, &department, &created)
CheckErr(err)
fmt.Println("uid = ", uid, "\nname = ", username, "\ndep = ", department, "\ncreated = ", created, "\n-----------")
}
}
func sqlUpdate() {
//更新数据
stmt, err := db.Prepare("update userinfo set username=$1 where uid=$2")
CheckErr(err)
res, err := stmt.Exec("ficow", 1)
CheckErr(err)
affect, err := res.RowsAffected()
CheckErr(err)
fmt.Println("rows affect:", affect)
}
*/
func sqlClose() {
db.Close()
}
func CheckErr(err error) {
if err != nil {
panic(err)
}
}