TL DR; 想要一些Java帮助连接到一个真正的本地数据库(无法访问服务器技术),或者如果你可以提供代码,那将是有效的.它所要做的就是查询数据库(MS Access,虽然可以更改),然后输出一个JSON字符串.有关更多特异性,请参阅EDIT2.
编辑:在任何人说JDBC之前; 我查看了教程(开始深入阅读),但大部分内容似乎都面向服务器技术,我无法访问.
编辑2:似乎到目前为止大多数答案都要求安装某种我不幸不能做的(并且没有提及,所以我道歉).然而,这是目前正在使用的,我想要一个类似于Java的解决方案,使其更具跨浏览器兼容性,而不仅仅是HTA(链接:https://launchpad.net/accessdb)
好的,对于长版本.我正在尝试使用本地数据库来创建桌面样式的应用程序(并可能利用其他项目的知识).我可以创建没有问题的数据库(MS Access 2003,恰好可以快速获得).目前我正在使用ActiveX脚本来处理HTML应用程序中的数据库(*.HTA文件仅适用于Internet Explorer),我真的想让这个更多的跨浏览器(如果公司EVER切换到实际的浏览器)通过使用JAVA访问数据库,然后将结果输出JSON到局部变量JavaScript可以调用并使用.
老实说,宁愿选择教程类型信息,因为我想真正了解为什么这样做有效,所以我可以稍后修改它以满足我的需要.我安装了Eclipse以及JDK,并且可以使用Java编写小程序,因此不会完全死掉脑子(但距离P不远).我一直在使用JavaScript,因此我可以阅读相当多的Java代码(不同的语法,因为它们不相关,但我知道Java的一点点我可以毫无问题地转换回JS).
无论如何,任何援助将不胜感激.我可以继续用ActiveX开发(据我所知,它可以在系统上运行,我99%肯定他们会继续使用Internet Explorer,但是,想要一些灵活性).
我不确定我是否理解你的要求,但我确实破译了一些关键点.我建议的是,您可以在单个软件包(例如JAR)中提供完整的工作应用程序,不需要太多(如果有的话)配置或管理服务器.
一些必备技能:
Java编程语言
JDBC,SQL
JSP和Servlets(用于Web层)
我正在尝试使用本地数据库来创建桌面样式应用程序[...]我想要一些Java帮助连接到真正的本地数据库(无法访问服务器技术)
JDBC可以与任何具有JDBC驱动程序的数据库一起使用,该驱动程序不一定是"网络模式"下的数据库,也可以与嵌入式数据库一起使用.
以下是嵌入模式下 Derby的示例:
当应用程序使用Embedded Derby JDBC驱动程序访问Derby数据库时,Derby引擎不会在单独的进程中运行,并且没有单独的数据库进程可以启动和关闭.相反,Derby数据库引擎在与应用程序相同的Java虚拟机(JVM)内运行.因此,Derby就像应用程序使用的任何其他jar文件一样成为应用程序的一部分.图1描绘了这种嵌入式架构.
以下是一些100%的Java和可嵌入数据库:
http://www.h2database.com/html/main.html
http://db.apache.org/derby/
http://hsqldb.org/
您还可以嵌入像Jetty这样的Web服务器.
Jetty的口号是"不要在Jetty中部署应用程序,在应用程序中部署Jetty".这意味着,作为将应用程序捆绑为要在Jetty中部署的标准WAR的替代方案,Jetty旨在成为一个软件组件,可以像任何POJO一样在Java程序中实例化和使用.
嵌入码头.
请注意,您可以使用这种方式使用其他Web服务器.
好的,所以你需要从本地数据库提供JSON,对吗?
您不需要服务器,可以直接从本地计算机上提供网页(您只需指向localhost)
所以,基本上(我知道这不会完整,但我希望是一个好的开始)
你必须:
安装servlet容器(Tomcat或Jetty),它们非常易于使用.
创建一个servlet或JSP页面来显示数据(JSP也很简单)
使用JDBC创建到本地数据库(如Derby)的连接
使用库将数据转换为JSON
安装tomcat
(我将为UNIX描述,但它对于Windows是相同的)
从这里下载然后将文件解压缩到您喜欢的某个目录中(例如/ home/you /或C:\ Users\you \)
打开一个终端并转到tomcat bin
目录并键入catalina.sh run
将启动tomcat,你需要在你的系统上安装Java
打开浏览器 http://localhost:8080
它应该如下所示:
tomcat运行http://a.imageshack.us/img180/8414/capturadepantalla201007l.png
创建一个JSP文件
接下来,转到tomcat webapps
目录,它应该包含以下文件夹:
ROOT/
docs/
examples/
host-manager/
manager/
创建一个新的,例如your
或其他内部创建一个文件Hello.jsp
与以下内容:
Hello.jsp ---------- Hello, world
然后在浏览器中打开: http://localhost:8080/your/Hello.jsp
应该是这样的:
你好,世界http://a.imageshack.us/img541/1162/capturadepantalla201007h.png
创建JDBC程序
接下来,在你的webapp中your
创建目录:WEB-INF/lib
并在那里保存derby JDBC驱动程序,你可以从这里获取它
修改Hello.jsp文件以创建如下样本表:
<%@page import="java.sql.*, java.util.*"%> <%! public String getData() { List list = new ArrayList(); try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); Connection connection = DriverManager.getConnection("jdbc:derby:yourdb;create=true"); // The first time: PreparedStatement pstmt = connection.prepareStatement( "CREATE TABLE PEOPLE\n"+ "(PERSON_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY\n"+ " CONSTRAINT PEOPLE_PK PRIMARY KEY, PERSON VARCHAR(26))"); pstmt.executeUpdate(); pstmt = connection.prepareStatement("INSERT INTO PEOPLE(PERSON) VALUES('OSCAR')"); pstmt.executeUpdate(); } catch( Exception e ) { throw new RuntimeException( e ); } return ""; } %> :) <% getData(); %>
然后再去执行你的jsp localhost:8080/your/Hello.jsp
如果你执行两次,系统会告诉你表已经存在:
执行两次http://a.imageshack.us/img707/7960/capturadepantalla201007v.png
没关系,我们已经创建了表格.
使用库输出JSON
Shudown tomcat,但是按下contrl-c
下载并复制到您的WEB-INF/lib目录中的json-simple jar.你可以从这里得到它
再次启动tomcat
在JSP中注释创建代码并将其替换为SQL查询,如下所示:
<%@page import="java.sql.*, java.util.*, org.json.simple.JSONValue"%> <%! public String getData() { List list = new ArrayList(); Connection connection = null; try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); connection = DriverManager.getConnection("jdbc:derby:yourdb;create=true"); // The first time: //PreparedStatement pstmt = connection.prepareStatement( // "CREATE TABLE PEOPLE\n"+ // "(PERSON_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY\n"+ // " CONSTRAINT PEOPLE_PK PRIMARY KEY, PERSON VARCHAR(26))"); //pstmt.executeUpdate(); //pstmt = connection.prepareStatement("INSERT INTO PEOPLE(PERSON) VALUES('OSCAR')"); //pstmt.executeUpdate(); // execute select the second time PreparedStatement psmt = connection.prepareStatement("SELECT person FROM PEOPLE"); ResultSet rs = psmt.executeQuery(); while( rs.next() ){ list.add( rs.getString("person")); } } catch( Exception e ) { throw new RuntimeException( e ); } finally { if( connection != null ) try { connection.close(); } catch( Exception e ){} } return JSONValue.toJSONString(list); } %> :)
注意我们正在使用throw导入,最后,我们更改方法的调用以将结果放入javascript变量 list
运行时,JSP页面将如下所示(您必须右键单击以查看HTML源代码,以便查看标记):
结果http://a.imageshack.us/img248/7637/capturadepantalla201007c.png
希望这个对你有帮助.我试着让你变得非常简单.
重要事项上面的示例充满了不良做法,不要那样编码(例如,直接在tomcat webapps文件夹上创建Web应用程序,或直接从JSP页面执行SQL(更不用说,不关闭资源等)
主要想法是为您提供足够的信息以便开始使用.
有一些方法可以将它与eclipse集成,并使用SQL Visor(如SquirrelSQL客户端)来操作数据.
这应该很简单,我实际上下载了文件并在编写这个答案时创建了测试,所以它应该可以工作.