Skip to content

Latest commit

 

History

History
103 lines (72 loc) · 2.76 KB

File metadata and controls

103 lines (72 loc) · 2.76 KB

本文档介绍 CovenantSQL 客户端的使用方式。客户端用来创建、查询、更新和删除 SQLChain 以及绑定的数据库。

开始之前

确保 $GOPATH/bin 目录在环境变量 $PATH 中,执行以下命令

$ go get github.com/CovenantSQL/CovenantSQL/client
$ go get github.com/CovenantSQL/CovenantSQL/cmd/cql

然后在你的 go 代码中 import 第一个 client 包。

初始化一个 CovenantSQL 客户端

首先需要一个 config 文件和 master key 来初始化。master key 用来加密解密本地密钥对。以下是如何用一个自定义 master key 来生成默认的 config 文件:

生成默认的配置文件

运行以下 cql 命令,输入 master key(类似密码)来生成本地密钥对。等待几十秒,会在 ~/.cql 文件夹中,生成一个私钥文件和一个名为 config.yaml 的配置文件。

$ cql generate config
Generating key pair...
Enter master key(press Enter for default: ""):
⏎
Private key file: ~/.cql/private.key
Public key's hex: 025abec9b0072615170f4acf4a2fa1162a13864bb66bc3f140b29f6bf50ceafc75
Generated key pair.
Generating nonce...
INFO[0005] cpu: 1
INFO[0005] position: 0, shift: 0x0, i: 0
nonce: {{1450338416 0 0 0} 26 0000002dd8bdb50ba0270642e4c4bc593c1630ef7784653f311b3c3d6374e514}
node id: 0000002dd8bdb50ba0270642e4c4bc593c1630ef7784653f311b3c3d6374e514
Generated nonce.
Generating config file...
Generated config.

有了配置文件之后,可以通过以下 go 代码来初始化 CovenantSQL 客户端:

client.Init(configFile, masterKey)

客户端使用方式

创建一个 SQLChain 数据库

创建 SQLChain 数据库需要指明需要几个节点(nodeCount变量):

var (
	dsn string
	meta client.ResourceMeta
)
meta.Node = uint16(nodeCount)
dsn, err = client.Create(meta)
// process err

创建完毕会返回一个 dsn 字符串,用来访问这个数据库。

查询和执行

拿到 dsn 字符串后,可以通过以下代码在 SQLChain 中执行 SQL 语句:

	db, err := sql.Open("covenantsql", dsn)
	// process err

	_, err = db.Exec("CREATE TABLE testSimple ( column int );")
	// process err

	_, err = db.Exec("INSERT INTO testSimple VALUES(?);", 42)
	// process err

	row := db.QueryRow("SELECT column FROM testSimple LIMIT 1;")

	var result int
	err = row.Scan(&result)
	// process err
	fmt.Printf("SELECT column FROM testSimple LIMIT 1; result %d\n", result)

	err = db.Close()
	// process err

用法和其他 go sql driver 一致。

删除数据库

使用 dsn 来删除数据库:

	err = client.Drop(dsn)
	// process err

完整示例

在以下目录中有一个简单示例和复杂示例可以参考 示例