Java 爪哇及;本地数据库

Java 爪哇及;本地数据库,java,database,database-connection,local,Java,Database,Database Connection,Local,TL-DR;想要一些Java帮助来连接到真正的本地数据库(无法访问服务器技术),或者如果您可以快速编写代码,那就行了。它所要做的就是查询DB(MS访问,尽管可以更改),并输出一个JSON字符串。有关更多详细信息,请参见EDIT2 编辑:在任何人说JDBC之前;我仔细阅读了这些教程(开始深入阅读),但其中大部分似乎都是针对服务器技术的,我没有接触到这些技术 EDIT2:似乎到目前为止,大多数答案都需要某种类型的安装,但不幸的是我不能这样做(并且没有提到,所以我道歉)。然而,这正是目前正在使用的,我

TL-DR;想要一些Java帮助来连接到真正的本地数据库(无法访问服务器技术),或者如果您可以快速编写代码,那就行了。它所要做的就是查询DB(MS访问,尽管可以更改),并输出一个JSON字符串。有关更多详细信息,请参见EDIT2

编辑:在任何人说JDBC之前;我仔细阅读了这些教程(开始深入阅读),但其中大部分似乎都是针对服务器技术的,我没有接触到这些技术

EDIT2:似乎到目前为止,大多数答案都需要某种类型的安装,但不幸的是我不能这样做(并且没有提到,所以我道歉)。然而,这正是目前正在使用的,我希望有一个类似于Java的解决方案,使其更兼容跨浏览器,而不仅仅是HTA(链接:)

好的,长版本的。我正试图利用本地数据库为工作创建一个桌面风格的应用程序(并可能将知识用于其他项目)。我可以创建一个没有问题的数据库(MS Access 2003,刚好很快就可以使用)。目前,我正在使用ActiveX脚本在HTML应用程序(*.HTA文件仅适用于Internet Explorer)中处理数据库,我非常希望通过使用JAVA访问数据库,使其更加跨浏览器(万一公司切换到实际浏览器),然后将JSON中的结果输出到JavaScript可以调用和使用的局部变量

老实说,我更喜欢教程类型的信息,因为我想真正了解它的工作原理,以便以后可以修改它以满足我的需要。我已经安装了Eclipse和JDK,并且可以用Java修改小程序,所以不会完全死机(但离:P不远)。我一直在使用JavaScript,因此我可以阅读相当多的Java代码(由于它们之间没有关联,所以语法不同,但我对Java所知甚少,因此可以毫无问题地翻译回JS)


无论如何,任何帮助都将不胜感激。我可以继续使用ActiveX进行开发(据我所知,ActiveX可以在系统上运行,我99%肯定他们会继续使用Internet Explorer,但是,我希望有一些灵活性)。

我不确定我是否非常了解您的要求,但我确实解释了一些关键点。我的建议将使您能够在一个单个包中交付一个完整的工作应用程序(比如一个JAR),而不需要太多(如果有的话)配置或管理服务器

一些必要的技能:

  • Java编程语言
  • JDBC,SQL
  • JSP和servlet(用于Web层)
我想利用一个当地的 创建桌面样式的数据库 应用程序[……] 我想要一些关于连接到的Java帮助 真正的本地数据库(无访问权限) 服务器技术)

数据存储 JDBC可以与任何具有JDBC驱动程序的数据库一起使用,JDBC驱动程序不一定是“网络模式”下的数据库,也可以与嵌入式数据库一起使用

以下是中的Derby示例:

当应用程序访问Derby时 使用嵌入式Derby JDBC的数据库 驾驶员,德比引擎不运转 在一个单独的过程中,有 没有单独的数据库进程 启动和关闭。相反 Derby数据库引擎在 与服务器相同的Java虚拟机(JVM) 应用因此,德比成为了比赛的一部分 该应用程序与其他应用程序一样 应用程序使用的jar文件。 图1描述了这个嵌入式系统 建筑

以下是一些100%Java和嵌入式数据库:

网络层 您还可以嵌入Web服务器,如

Jetty的口号是“不要部署 在Jetty中应用,在中部署Jetty 你的申请”。这意味着 作为捆绑销售的替代方案 您的应用程序作为标准的WAR 在码头部署,码头是 设计成一个软件组件 可以在 Java程序就像任何POJO一样

嵌入


请注意,您还可以使用其他web服务器。

好的,所以您需要从本地数据库提供JSON,对吗

您不需要服务器,您可以直接从本地计算机为web页面提供服务(只需指向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

应该是这样的:

<%@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();
%>
<%@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);
     }
%>
:)
<script>
 var list = <%=
    getData()
%>
</script>

创建一个JSP文件

接下来,转到tomcat
webapps
目录,它应该包含以下文件夹:

ROOT/
文档/
示例/
主机管理器/
经理/

创建一个新的文件,例如
your
或其他文件,并在其中创建一个文件
Hello.jsp
,其中包含以下内容:

Hello.jsp
----------
Hello, world
然后在浏览器中打开:
http://localhost:8080/your/Hello.jsp

应该是这样的:

创建JDBC程序

接下来,在您的webapp
your
中创建目录:
WEB-INF/lib
并将derby JDBC驱动程序保存在那里,您可以从

修改Hello.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"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>SQL Fun</title>
    </head>
    <body>
        <h1>Welcome to Derby SQL</h1>
        <!-- Form to prompt for SQL -->
        <form action="index.jsp" method="POST">
            <label for="sql">SQL Text:</label>
            <textarea cols="40" rows="10" name="sql"></textarea>
            <br/>
            <!-- click Execute query to execute a SELECT statement -->
            <input type="submit" name="doquery" value="Execute Query"/>
            <!-- click Execute DDL to execute a CREATE, UPDATE, DROP or DELETE statement -->
            <input type="submit" name="doddl" value="Execute DDL"/>
        </form>
        <c:if test="${!empty param.sql}">
            <!-- param is the default variable with the request parameters -->
            Executing: ${param.sql}
            <br/>
            <!-- This sets up the DB Connection to derby -->
            <sql:setDataSource driver="org.apache.derby.jdbc.EmbeddedDriver"
                url="jdbc:derby:derbyDB;create=true" scope="request"/>

            <c:choose>
                <c:when test="${!empty param.doddl}">
                    <sql:update var="result">
                    ${param.sql}
                    </sql:update>
                    Result = ${result}
                </c:when>
                <c:otherwise>
                    <sql:query var="result">
                    ${param.sql}
                    </sql:query>

                    <table border="1">
                        <!-- column headers -->
                        <tr>
                            <c:forEach var="columnName" items="${result.columnNames}">
                                <th><c:out value="${columnName}"/></th>
                            </c:forEach>
                        </tr>
                        <!-- column data -->
                        <c:forEach var="row" items="${result.rowsByIndex}">
                            <tr>
                                <c:forEach var="column" items="${row}">
                                    <td><c:out value="${column}"/></td>
                                </c:forEach>
                            </tr>
                        </c:forEach>
                    </table>
                </c:otherwise>
            </c:choose>
        </c:if>
    </body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>