go-sqlite3 操作加密的sqlite3数据库不加密

实习导演 发布于 2019/06/25 11:19
阅读 642
收藏 0

Linux基金会免费官方培训及考试申请即将截止,戳这里申请!>>>

代码如下:建立的数据库并不加密,求解。 

// +build sqlite_userauth

package main

import (
	"database/sql"
	"fmt"
	"strconv"
	"time"

	_ "github.com/mattn/go-sqlite3"
)

func main() {
	now_time := time.Now()
	//db, err := sql.Open("sqlite3", "./foo1.db")
	hs := now_time.Format("150405")
	tmp_str := "file:test" + hs + ".s3db?_auth&_auth_user=admin&_auth_pass=admin&_auth_crypt=sha1"
	db, err := sql.Open("sqlite3", tmp_str)
	checkErr(err)
	//查询是否存在数据表
	check_db, err := db.Query("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name")
	checkErr(err)

	have_table := 0

	for check_db.Next() {
		var tablename string
		err = check_db.Scan(&tablename)
		checkErr(err)
		fmt.Println("****查询表:")
		fmt.Println(tablename)
		if tablename == "userinfo" {
			have_table = 1
		}

	}
	if have_table == 0 {
		// 创建数据表
		create_db, err := db.Prepare("CREATE TABLE [userinfo]([uid] INTEGER PRIMARY KEY, [username] TEXT, [departname] TEXT, [created] TEXT);")
		checkErr(err)
		_, err = create_db.Exec()
	}
	//插入数据
	stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
	checkErr(err)
	nt := now_time.Format("2006-01-02 15:04:05")
	res, err := stmt.Exec("astaxie", "研发部门", nt)
	checkErr(err)
	id, err := res.LastInsertId()
	checkErr(err)
	fmt.Println("****最新ID:")
	fmt.Println(id)
	//更新数据
	stmt, err = db.Prepare("update userinfo set username=? where uid=?")
	checkErr(err)
	res, err = stmt.Exec("astaxieupdate", id)
	checkErr(err)
	affect, err := res.RowsAffected()
	checkErr(err)
	fmt.Println("****更新ID:")
	fmt.Println(affect)
	//查询数据
	rows, err := db.Query("SELECT * FROM userinfo")
	checkErr(err)
	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("****查询数据:")
		fmt.Println("uid:" + strconv.Itoa(uid))
		fmt.Println("username:" + username)
		fmt.Println("department:" + department)
		fmt.Println("created:" + created)
	}
	//删除数据
	// stmt, err = db.Prepare("delete from userinfo where uid=?")
	// checkErr(err)
	// res, err = stmt.Exec(id)
	// checkErr(err)
	// affect, err = res.RowsAffected()
	// checkErr(err)
	// fmt.Println("****删除数据:")
	// fmt.Println(affect)

	db.Close()
}
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

 

加载中
0
大白bright
大白bright

你好我想问下,你这个问题解决了吗?如何解决的啊

大白bright
大白bright
回复 @实习导演 : 谢谢大佬
实习导演
实习导演
用了sqlite的一个加密库。不使用go-sqlite3,而是用一个叫做SQLCipher 的,就只需要改import 其他的任何不需要改动
实习导演
实习导演
解决了
返回顶部
顶部