连接到本地 H2 数据库的 HTML 表单

Posted

技术标签:

【中文标题】连接到本地 H2 数据库的 HTML 表单【英文标题】:HTML form connecting to local H2 database 【发布时间】:2016-04-14 15:00:21 【问题描述】:

我想创建一个 html 表单,用于在 localhost 上输入/查看数据。

数据位于本地主机上基于文件的 H2 数据库中。

理想情况下,我只想使用客户端 javascript 和 HTML,这样用户就不需要运行本地 Web 服务器。

我在这里找到了一些关于如何连接的信息:http://blog.jooq.org/2014/06/06/java-8-friday-javascript-goes-sql-with-nashorn-and-jooq/

但我想知道下一步如何将连接/SQL 查询集成到 Web 表单中。

我知道,出于安全原因,通常不赞成使用 javascript 连接到数据库,但对于这个用例,它只会访问 localhost 上的数据。

另外,是否有任何推荐的 javascript 库可以让这更容易?

var someDatabaseFun = function() 
    var Properties = Java.type("java.util.Properties");
    var Driver = Java.type("org.h2.Driver"); //JDBC interface for H2

    var driver = new Driver();
    var properties = new Properties();

    properties.setProperty("user", "");     // database username
    properties.setProperty("password", ""); // database password

    try 
        var conn = driver.connect(
            "jdbc:h2:~/db", properties);  // connect to database

        // Database code here
    
    finally 
        try  
            if (conn) conn.close();
         catch (e) 
    


someDatabaseFun();

【问题讨论】:

该教程适用于在 Nashorn/JVM 中运行 JavaScript,而不是在 Web 上运行 JavaScript。该代码不能在客户端运行。 是否有类似的东西可以在客户端运行(H2 数据库和 JDBC 接口也在 localhost 上运行?) 【参考方案1】:

使用纯 JavaScript 解决方案连接到像 H2 这样的基于 Java 的数据库并不容易(尽管 H2 通过 JDBC 和 HTML 公开自己)。 但是,肯定有一些方法可以在纯 html 中使用数据库。这些本质上利用了浏览器内置的 indexeddb 和 websql 存储机制。 此处讨论了不完整的 javascript 库列表http://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/:

草坪椅 PouchDB 本地觅食 德谢 洛夫菲尔德 Lo​​kiJS AlaSQL 制作驱动器 先行者数据库 YDN-DB

这些是对纯 WebSQL 的补充。就我而言,纯 WebSQL 是最好的解决方案,例如:http://www.tutorialspoint.com/html5/html5_web_sql.htm

我愿意失去 IE/Firefox 兼容性。 但也有将 WebSQL 填充到 IndexedDB 的选项,例如: http://nparashuram.com/IndexedDBShim/

因此,总而言之,您可以使用纯 JavaScript 与 SQL 客户端一起工作,但 H2 并不是最好的数据库。 WebSQL 的优点是数据库实际上是由浏览器存储为 SQLite 文件(基于文件的存储对我的应用程序很重要)

【讨论】:

【参考方案2】:

我只想使用客户端 javascript 和 HTML

您的 JVM 将在哪里运行? H2 是一个 Java 数据库。它在 JVM 中运行。

您是否将其嵌入到 Java Applet 中? 您在使用 Java Web Start 吗?

它们将是我所知道的在客户端机器上运行 Java 的唯一方法。

任何其他必须连接到服务器。


如果我的任务是实现这个,我会运行嵌入在 Java Applet 中的 H2,然后让我的 javascript 与 Applet 对话。虽然它非常笨重,并且只将数据保存在内存中。为什么不将所有数据保存在 javascript 数组中?

【讨论】:

H2 通过本地 JRE 提供本地 JDBC 接口。用户将在其本地计算机上安装 java 所以你有 H2 作为服务器在机器上运行 localhost?你的问题是问这个连接 URL 是什么? 主要问题是是否可以使用客户端 javascript 连接到 H2,然后设置用于查看/输入数据的网络表单 好吧,不管 H2 在哪里(在哪台机器上)运行,它仍然作为服务器运行。因此,您正在连接到服务器。因此这个问题适用。就 JDBC 连接而言,mysql 与 H2 没有什么不同。 ***.com/questions/3020751/…

以上是关于连接到本地 H2 数据库的 HTML 表单的主要内容,如果未能解决你的问题,请参考以下文章

使用 IDEA 连接到 H2

使用 RobotFramework 连接到 H2 数据库文件

使用 Java 应用程序远程连接到 H2 数据库

R中的H2O错误-无法连接到本地主机

如何从 Java 和 H2 DB 连接到 H2 数据库

我无法连接到 H2 数据库