Java和本地数据库
TL DR; 想要一些Java帮助连接到一个真正的本地数据库(无法访问服务器技术),或者如果你可以提供代码,那将是有效的。 它所要做的就是查询数据库(MS Access,虽然可以更改),然后输出一个JSON字符串。 有关更多特异性,请参阅EDIT2。
编辑:在任何人说JDBC之前; 我查看了教程(开始深入阅读),但大部分内容似乎都面向服务器技术,我无法访问。
EDIT2:到目前为止,大多数答案都需要安装某种我很遗憾不能做的事情(没有提及,所以我道歉)。 然而,这是目前正在使用的,我想要一个类似于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
Web层
您还可以嵌入像Jetty这样的Web服务器。
Jetty的口号是“不要在Jetty中部署应用程序,在应用程序中部署Jetty”。 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可以像任何POJO一样在Java程序中实例化和使用。
嵌入docker 。
请注意,您可以使用这种方式使用其他Web服务器。
好的,所以你需要从本地数据库提供JSON,对吗?
您不需要服务器,可以直接从本地计算机上提供网页(您只需指向localhost)
所以,基本上(我知道这不会完整,但我希望是一个好的开始)
你必须:
- 安装servlet容器(Tomcat或Jetty),它们非常易于使用。
- 创建一个servlet或JSP页面来显示数据(JSP也很简单)
- 使用JDBC创建到本地数据库(如Derby)的连接
- 使用库将数据转换为JSON
安装tomcat
(我将为UNIX描述,但它对于Windows是相同的)
从这里下载然后将文件解压缩到您喜欢的某个目录中(例如/ home / you /或C:\ Users \ you \)
打开终端并转到tomcat bin
目录并输入将启动tomcat的catalina.sh run
,需要在系统上安装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中创建目录: 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(); %>
并通过转到localhost:8080/your/Hello.jsp
再次执行您的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客户端)来操作数据。
这应该很简单,我实际上下载了文件并在编写这个答案时创建了测试,所以它应该可以工作。
作为奥斯卡的后续……
这是一个简单的“输入SQL”JSP页面,使用JSTL(Java标准标记库)标记。
所有你需要做的工作都是在derby.jar库中。
从Apache下载tomcat。
从Apache下载derby
cd $TOMCAT_HOME/webapps
mkdir yourapp
cd yourapp
取以下内容并将其放在index.jsp中:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> SQL Fun Welcome to Derby SQL
Executing: ${param.sql}
${param.sql} Result = ${result} ${param.sql}
mkdir WEB-INF
采取以下措施并将其放在web.xml中
index.jsp
mkdir WEB-INF/lib
将derby.jar
复制到WEB-INF/lib
你现在应该有3个文件:
$ TOMCAT_HOME / webapps / yourapp / index.jsp $ TOMCAT_HOME / webapps / yourapp / WEB-INF / web.xml $ TOMCAT_HOME / webapps / yourapp / WEB-INF / lib / derby.jar
现在启动Tomcat,并将浏览器指向http://localhost:8080/yourapp
你会得到这个小框来输入SQL。
Derby将自动为您创建数据库。
使用JSTL和SQL标记,您可以通过直接JSP完成所有操作。
在JSP中做所有事情是“最佳实践”吗? 没有。
它有用吗? 是。
这是实用的吗? 是。
您可以随时更改。
您可能想看一下Apache Derby 。 最近的JDK将其作为JavaDB包含在内。 在Windows上,您可以在ProgramFiles / Sun中找到它。