H2数据库使用:转到 h2数据库(h2 go)

关于H2数据库使用的问题,在h2 go中经常遇到, 是否可以从 Go 代码连接到 h2 数据库http://www.h2database.com

是否可以从 Go 代码连接到 h2 数据库http://www.h2database.com

5

首先,您需要运行数据库服务器,允许通过 TCP,PotgreSQL 或 Web 从任何主机进行连接(我已经使用名为runH2Server.sh的 linux shell 脚本完成了此操作):

#!/bin/bash
export PATH=$PATH:/tmp/H2DB/jre1.8/bin
export CLASSPATH=/tmp/H2DB/DBServer:/tmp/H2DB/DBServer/h2.jar
java -classpath $CLASSPATH org.h2.tools.Server -webAllowOthers -tcpAllowOthers -pgAllowOthers -baseDir /tmp/H2DB/DBServer

运行脚本将产生以下 otuput:

# ./runH2Server.sh
Web Console server running at http://127.0.1.1:8082 (others can connect)
TCP server running at tcp://127.0.1.1:9092 (others can connect)
PG server running at pg://127.0.1.1:5435 (others can connect)

现在您的服务器已准备好进行客户端连接,您可以测试它将 Web 浏览器连接到指定的 IP 和端口,例如:http://192.168.1.130:8082/login.do

请务必下载 Go postgres 驱动程序表单“github.com / lib / pq”。

现在,从另一个主机(如果需要,也可以使用相同的主机),您可以使用以下代码来测试您的连接:

package main
import (
    "database/sql"
    "fmt"
    _ "github.com/lib/pq"
)
const (
  host     = "192.168.1.130"
    port = 5435
    user     = "sa"
    password = ""
    dbname   = "/tmp/H2DB/DBServer/test"
)
func main() {
    psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
        "dbname=%s sslmode=disable", host, port, user, dbname)
    db, err := sql.Open("postgres", psqlInfo)
    if err != nil {
        panic(err)
    }
    defer db.Close()
    err = db.Ping()
    if err != nil {
        panic(err)
    }
    fmt.Println("Successfully connected!")
    rows, err := db.Query("SHOW TABLES")
    if err != nil {
        panic(err)
    }
    fmt.Println("\n\n=== Tables in DB ===")
    fmt.Printf("%10v | %15v\n", "tablename", "tableschema")
    for rows.Next() {
        var tablename string
        var tableschema string
        err = rows.Scan(&tablename, &tableschema)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%10v | %15v\n", tablename, tableschema)
    }
    fmt.Println("\n\n=== Records in DB ===")
    rows, err = db.Query("SELECT * FROM TEST ORDER BY ID")
    if err != nil {
        panic(err)
    }
    fmt.Printf("%10v | %15v\n", "ID", "NAME")
    for rows.Next() {
        var id int
        var name string
        err = rows.Scan(&id, &name)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%10v | %15v\n", id, name)
    }
}

运行它,你将有以下输出:

C:\Go\PG_
λ go run PgDB.go
Successfully connected!
=== Tables in DB ===
 tablename |     tableschema
      TEST |          PUBLIC
=== Records in DB ===
        ID |            NAME
         1 |           Hello
         2 |           World
2

根据http://www.h2database.com/html/advanced.html

...它支持 PostgreSQL 网络协议...对 PostgreSQL 网络协议的支持是相当新的,应该被视为实验性的,它不应该用于生产应用程序。

因此,github.com/lib/pq驱动程序很有可能使用 h2。

1

我为 Go 开发了一个“原生”Apache H2 数据库驱动程序。

https://github.com/jmrobles/h2go

在它的日子里,我试图使用 Postgres 接口,但我遇到了诊断 SQL 语法中的错误的问题。

我想提供一个纯粹的替代方案,将直接访问 H2 的 TCP 接口。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(398)
高图像分辨率小图像数据集的图像分类(high resolution image dataset)
上一篇
Python实战:Python
下一篇

相关推荐

  • mongodb服务器:如何使用MongoDB服务器来提高数据库性能

    示例示例MongoDB 是一种面向文档的数据库,它具有高性能、高可扩展性和自动故障转移等特性,可以用于存储和管理大量数据。MongoDB 服务器是 MongoDB 数据库的核心组件,它是一个独立的进程,用于管理和存储数据。它可以处理客户端发送的请求,并将数据存储到磁盘中。…

    2023-05-03 02:25:28
    0 14 71
  • django数据库:如何使用Django数据库创建强大的Web应用

    Django数据库是一种面向对象的关系型数据库,用于存储Python应用程序中的数据。它使用了一种叫做ORM(对象关系映射)的技术,它将数据库中的表,行和列映射到Python对象上。 Django数据库支持多种数据库,包括SQLite,MySQL,PostgreSQL和Oracle。…

    2023-06-14 12:53:19
    0 31 86
  • wingo数据库:管理系统的实施与应用

    Wingo数据库是一种面向文档的NoSQL数据库,它可以帮助开发人员快速构建和部署Web应用程序。它使用JSON格式存储文档,提供了一个简单的REST API,在浏览器中运行,可以在几分钟内搭建一个完整的数据库应用程序。…

    2023-01-31 13:42:58
    0 74 56
  • 优化荷兰电话号码 RegEx模式

    这是我目前的正则表达式:…

    2022-11-23 05:22:34
    0 41 66
  • 抓取 gdelt数据时出现属性错误

    我正在从 GDELT [https:/ / www.gdeltproject.org] 刮取数据。这是一个非常酷的项目,每天检查〜 100,000 个新闻网站,标记所有文章,并使其可用。我在提取数据时得到属性错误。代码使用如下:…

    2022-11-29 03:23:47
    0 52 30
  • geopandas如何加入op“内”和“相交”不同

    我有一个数据框包含点,另一个数据框包含多边形,所以我想空间连接它们:…

    2022-12-27 02:16:56
    0 42 39
  • 从url获取FDQN并将其链接到 grafana仪表板数据链接

    我有一个 grafana 仪表板,我想提取 URL 并在 grafana 数据链接中使用它。…

    2022-11-11 15:11:58
    0 32 76
  • Sage图斜率场和微分方程

    我试图绘制斜率场,并在鼠尾草笔记本几个独特的解决方案,但我的斜率场不匹配的解决方案。…

    2022-11-11 15:11:58
    0 19 90

发表评论

登录 后才能评论

评论列表(21条)