2016-01-10 46 views
6

我想创建一个用于在本地主机上输入/查看数据的HTML表单。连接到本地H2数据库的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连接到数据库通常是出于安全原因而皱起眉头,但对于这种使用情况,它只会访问本地主机上的数据。

此外,有没有推荐的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(); 
+0

该教程用于在Nashorn/JVM中运行JavaScript,而不是在Web上运行JavaScript。该代码不能在客户端运行。 – approxiblue

+0

是否有类似的东西可以运行客户端(H2数据库和JDBC接口也运行在本地主机上?) – FGiorlando

回答

1

使用纯JavaScript解决方案连接到基于java的数据库(如H2)并不容易(尽管H2通过JDBC和HTML公开了自己的事实)。
但是,在pure-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的选项索引资料,例如: http://nparashuram.com/IndexedDBShim/

所以,综上所述,你可以用SQL客户端的工作与纯JavaScript,但H2是不是这样做的最佳DB。 WebSQL的优点是数据库实际上被浏览器存储为一个SQLite文件(基于文件的存储对我的应用程序非常重要)

0

我想只使用客户端JavaScript和HTML

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

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

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

其他任何已将连接到服务器。


如果我有实现这个任务,我将运行嵌入的Java Applet H2,然后让我的javascript谈话的小程序。但它非常笨重,只能将数据保存在内存中。为什么不把所有的数据保存在JavaScript数组中?

+0

H2通过本地JRE提供本地JDBC接口。用户将在他们的本地机器上安装java – FGiorlando

+0

所以你有H2作为机器'localhost'上的服务器运行?你的问题是问这是什么连接网址? – Stewart

+0

的主要问题是,如果可以使用客户端JavaScript连接到H2,然后设置用于查看/输入数据的网络表格 – FGiorlando