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

HTML form connecting to local H2 database

我想为本地主机上的 entering/viewing 数据创建一个 HTML 表单。

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

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

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

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

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

此外,是否有任何推荐的 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();

I'd like to use only client-side javascript and HTML

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

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

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

任何其他连接到服务器。


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

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

  • 草坪椅
  • PouchDB
  • LocalForage
  • 德西
  • 洛夫菲尔德
  • LokiJS
  • 阿拉SQL
  • MakeDrive
  • ForerunnerDB
  • YDN-DB

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

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

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