当前位置:  开发笔记 > 编程语言 > 正文

Java和本地数据库

如何解决《Java和本地数据库》经验,为你挑选了2个好方法。

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,但是,想要一些灵活性).



1> bakkal..:

我不确定我是否理解你的要求,但我确实破译了一些关键点.我建议的是,您可以在单个软件包(例如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/

Web层

您还可以嵌入像Jetty这样的Web服务器.

Jetty的口号是"不要在Jetty中部署应用程序,在应用程序中部署Jetty".这意味着,作为将应用程序捆绑为要在Jetty中部署的标准WAR的替代方案,Jetty旨在成为一个软件组件,可以像任何POJO一样在Java程序中实例化和使用.

嵌入码头.

请注意,您可以使用这种方式使用其他Web服务器.



2> OscarRyz..:

好的,所以你需要从本地数据库提供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源代码,以便查看

TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有