HTML表单连接本地H2数据库

6
我想创建一个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的。那段代码无法在客户端运行。 - approxiblue
有类似的东西可以在客户端运行吗?(同时在本地主机上运行H2数据库和JDBC接口)? - FGiorlando
2个回答

1
连接到基于Java的数据库(如H2)并不容易,尽管H2通过JDBC和HTML公开自身。
然而,在纯HTML中有一些使用数据库的方法。这些方法本质上利用了浏览器内置的indexeddb和websql存储机制。 这里讨论了一份不完整的JavaScript库列表 http://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/

  • Lawnchair
  • PouchDB
  • LocalForage
  • Dexie
  • Lovefield
  • LokiJS
  • AlaSQL
  • MakeDrive
  • ForerunnerDB
  • YDN-DB

除了使用纯WebSQL外,这些还可以与之配合使用。对于我的需求来说,纯WebSQL是最好的解决方案,例如:http://www.tutorialspoint.com/html5/html5_web_sql.htm

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

因此,总之,您可以使用纯JavaScript在客户端处理SQL,但是H2不是最适合此操作的最佳DB。 WebSQL的优势在于浏览器实际上将数据库存储为SQLite文件(基于文件的存储对我的应用程序很重要)


0
我想只使用客户端的JavaScript和HTML。
你的JVM会在哪里运行?H2是一个Java数据库,它在JVM内部运行。
  • 你是否将其嵌入到Java Applet中?
  • 你是否使用Java Web Start?
这些应该是我所知道的在客户端机器上运行Java的唯一方式。
其他任何东西必须连接到服务器。
如果我被指派实现这个,我会在Java Applet中运行H2嵌入式数据库,然后让我的JavaScript与Applet通信。虽然这很笨重,但只能在内存中保留数据。为什么不直接将所有数据保存在JavaScript数组中呢?

H2通过本地JRE提供本地JDBC接口。用户将在其本地计算机上安装Java。 - FGiorlando
你已经在本地机器上运行H2作为服务器了吗?你的问题是在询问这个连接URL是什么吗? - Stewart
主要问题是是否可以使用客户端JavaScript连接到H2,然后设置一个Web表单以查看/输入数据。 - FGiorlando
无论 H2 运行在哪个机器上,它仍然作为服务器运行。因此,您正在连接到服务器。因此,这个问题适用。就 JDBC 连接而言,MySQL 与 H2 没有任何区别。https://dev59.com/QHA75IYBdhLWcg3w899J - Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接