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.
100 lines
2.3 KiB
100 lines
2.3 KiB
package db
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
// 导入包,导入前缀为下划线,则init函数被执行,然后注册驱动。
|
|
"github.com/jmoiron/sqlx"
|
|
_ "github.com/logoove/sqlite"
|
|
)
|
|
|
|
var db *sqlx.DB
|
|
var err error
|
|
|
|
func Init() {
|
|
// fmt.Printf("hey,I am initilize function in SqliteDb\n")s
|
|
//
|
|
// Open() 函数指定驱动名称和数据源名称
|
|
db, err = sqlx.Open("sqlite", "ups.db")
|
|
if err != nil {
|
|
fmt.Printf("Database creation failed: %v\n", err)
|
|
return
|
|
}
|
|
// 调用db.Close() 函数,确保关闭数据库并阻止启动新的查询
|
|
// defer db.Close()
|
|
//
|
|
connectDB()
|
|
}
|
|
|
|
// 连接数据库
|
|
func connectDB() {
|
|
var version string
|
|
// QueryRow() 执行查询,返回版本号
|
|
err = db.QueryRow("SELECT SQLITE_VERSION()").Scan(&version)
|
|
if err != nil {
|
|
fmt.Printf("Database creation failed: %v\n", err)
|
|
return
|
|
}
|
|
// 连接成功,打印出"database connected:版本号"
|
|
fmt.Printf("Database creation successful: %v\n", version)
|
|
}
|
|
|
|
// 创建数据库表
|
|
func CreateTable() {
|
|
// 建表语句
|
|
sts := `
|
|
CREATE TABLE f_info (
|
|
id INTEGER PRIMARY KEY NOT NULL,
|
|
fname TEXT NOT NULL,
|
|
fpath TEXT NOT NULL,
|
|
fhash TEXT NOT NULL
|
|
);`
|
|
|
|
// 使用db.Exec() 函数来执行 SQL 语句
|
|
_, err = db.Exec(sts)
|
|
if err != nil {
|
|
fmt.Printf("Failed to create database table: %v\n", err)
|
|
return
|
|
}
|
|
fmt.Printf("Successfully created database table! \n")
|
|
}
|
|
|
|
// 插入数据
|
|
func InsertStf(sf StFileInfo) {
|
|
// 插入语句
|
|
res, err := db.Exec("INSERT INTO f_info(fname, fpath,fhash) VALUES(?,?,?)", sf.Fname, sf.Fpath, sf.Fhash)
|
|
if err != nil {
|
|
fmt.Printf("Insert data failed: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// 获取自增ID
|
|
lastInsertId, _ := res.LastInsertId()
|
|
fmt.Printf("Successfully inserted data, lastInsertId = %v\n", lastInsertId)
|
|
}
|
|
|
|
// 查询数据
|
|
func Fquery(fpbs string) (stlist []StFileInfo) {
|
|
// 结果重量集合
|
|
stlist = make([]StFileInfo, 0)
|
|
|
|
// 查询语句
|
|
rows, err := db.Query("SELECT id,fname,fpath,fhash FROM f_info WHERE fpbs = ?", fpbs)
|
|
//
|
|
if err != nil {
|
|
fmt.Printf("Failed to query data: %v\n", err)
|
|
return
|
|
}
|
|
// FOR loop
|
|
for rows.Next() {
|
|
// var weight float64
|
|
var st StFileInfo
|
|
err = rows.Scan(&st.Id, &st.Fname, &st.Fpath, &st.Fhash)
|
|
if err != nil {
|
|
fmt.Printf("Failed to read data: %v\n", err)
|
|
continue
|
|
}
|
|
stlist = append(stlist, st)
|
|
}
|
|
return stlist
|
|
}
|
|
|