From a7069fe9b7839fbaccb0a069e0940df59358dd52 Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Sun, 9 Jul 2023 20:46:46 +0800 Subject: [PATCH] =?UTF-8?q?sqlite=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/wails/go.mod | 1 + app/wails/go.sum | 3 ++ app/wails/lib/general_test.go | 62 +++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/app/wails/go.mod b/app/wails/go.mod index 39d855d..0cfc108 100644 --- a/app/wails/go.mod +++ b/app/wails/go.mod @@ -4,6 +4,7 @@ go 1.18 require ( github.com/gen2brain/beeep v0.0.0-20230602101333-f384c29b62dd + github.com/mutecomm/go-sqlcipher/v4 v4.4.2 github.com/wailsapp/wails/v2 v2.5.1 ) diff --git a/app/wails/go.sum b/app/wails/go.sum index f541f54..5a02fd4 100644 --- a/app/wails/go.sum +++ b/app/wails/go.sum @@ -33,6 +33,8 @@ github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHR github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mutecomm/go-sqlcipher/v4 v4.4.2 h1:eM10bFtI4UvibIsKr10/QT7Yfz+NADfjZYh0GKrXUNc= +github.com/mutecomm/go-sqlcipher/v4 v4.4.2/go.mod h1:mF2UmIpBnzFeBdu/ypTDb/LdbS0nk0dfSN1WUsWTjMA= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc= @@ -44,6 +46,7 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg= github.com/samber/lo v1.27.1/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk= diff --git a/app/wails/lib/general_test.go b/app/wails/lib/general_test.go index 1605248..96dbb49 100644 --- a/app/wails/lib/general_test.go +++ b/app/wails/lib/general_test.go @@ -2,13 +2,17 @@ package lib import ( "bytes" + "database/sql" "fmt" "github.com/gen2brain/beeep" "os" "os/exec" + "path/filepath" "strings" "testing" "time" + + _ "github.com/mutecomm/go-sqlcipher/v4" ) func TestName(t *testing.T) { @@ -57,3 +61,61 @@ func TestJavaEnv(t *testing.T) { fmt.Println(os.Getenv("java_home")) fmt.Println(os.Getenv("JAVA_HOME")) } + +func TestSqlite(t *testing.T) { + fmt.Println(os.Args[0]) + fmt.Println(os.Getwd()) + + dbPath := filepath.Join(filepath.Dir(os.Args[0]), "test.db") + fmt.Printf("dbPath => %v\n", dbPath) + + // 加密 + //dataSourceName := fmt.Sprintf("file:%s?_pragma_key=%s", dbPath, "shikong") + // 不加密 + dataSourceName := fmt.Sprintf("file:%s?", dbPath) + db, err := sql.Open("sqlite3", dataSourceName) + _, _ = db.Exec("PRAGMA cipher_use_hmac = OFF;") + _, _ = db.Exec("PRAGMA cipher_page_size = 1024;") + _, _ = db.Exec("PRAGMA kdf_iter = 4000;") + + if err != nil { + t.Fatal(err) + } + defer func() { + _ = db.Close() + }() + + err = db.Ping() + if err != nil { + t.Fatal(err) + } + + //_, err = db.Exec("PRAGMA key = shikong;") + //if err != nil { + // t.Fatal(err) + // return + //} + + sql := ` +DROP TABLE IF EXISTS cars; +CREATE TABLE cars(id INTEGER PRIMARY KEY, name TEXT, price INT); +INSERT INTO cars(name, price) VALUES('Audi',52642); +INSERT INTO cars(name, price) VALUES('Mercedes',57127); +INSERT INTO cars(name, price) VALUES('Skoda',9000); +INSERT INTO cars(name, price) VALUES('Volvo',29000); +INSERT INTO cars(name, price) VALUES('Bentley',350000); +INSERT INTO cars(name, price) VALUES('Citroen',21000); +INSERT INTO cars(name, price) VALUES('Hummer',41400); +INSERT INTO cars(name, price) VALUES('Volkswagen',21600); +` + _, _ = db.Exec(sql) + + result, err := db.Exec("select * from sqlite_master;") + if err != nil { + t.Fatal(err) + return + } + fmt.Printf("%+v\n", result) + + fmt.Println("数据库连接成功") +}