我想创建一个HTML表单,用于在localhost上输入/查看数据。
数据位于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();
答案 0 :(得分: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/:
这些是使用纯WebSQL的补充。就我的目的而言,纯WebSQL是最好的解决方案,例如:http://www.tutorialspoint.com/html5/html5_web_sql.htm
我愿意失去IE / Firefox的兼容性。 但是也有一些选项可以将WebSQL提升到IndexedDB,例如: http://nparashuram.com/IndexedDBShim/
因此,总而言之,您可以使用纯JavaScript来使用SQL客户端,但H2不是最好的数据库来执行此操作。 WebSQL的优势在于,数据库实际上是由浏览器存储为SQLite文件(基于文件的存储对我的应用程序很重要)
答案 1 :(得分:0)
我只想使用客户端javascript和HTML
您的JVM将在哪里运行? H2是一个Java数据库。它在JVM中运行。
他们是我所知道的在客户端机器上运行Java的唯一方法。
其他任何 连接到服务器。
如果我的任务是实现这个,我会在Java Applet中运行H2嵌入,然后让我的javascript与Applet对话。但它非常笨重,只能将数据保存在内存中。为什么不将所有数据保存在javascript数组中呢?