Java 爪哇及;本地数据库
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)Java 爪哇及;本地数据库,java,database,database-connection,local,Java,Database,Database Connection,Local,TL-DR;想要一些Java帮助来连接到真正的本地数据库(无法访问服务器技术),或者如果您可以快速编写代码,那就行了。它所要做的就是查询DB(MS访问,尽管可以更改),并输出一个JSON字符串。有关更多详细信息,请参见EDIT2 编辑:在任何人说JDBC之前;我仔细阅读了这些教程(开始深入阅读),但其中大部分似乎都是针对服务器技术的,我没有接触到这些技术 EDIT2:似乎到目前为止,大多数答案都需要某种类型的安装,但不幸的是我不能这样做(并且没有提到,所以我道歉)。然而,这正是目前正在使用的,我
无论如何,任何帮助都将不胜感激。我可以继续使用ActiveX进行开发(据我所知,ActiveX可以在系统上运行,我99%肯定他们会继续使用Internet Explorer,但是,我希望有一些灵活性)。我不确定我是否非常了解您的要求,但我确实解释了一些关键点。我的建议将使您能够在一个单个包中交付一个完整的工作应用程序(比如一个JAR),而不需要太多(如果有的话)配置或管理服务器 一些必要的技能:
- Java编程语言
- JDBC,SQL
- JSP和servlet(用于Web层)
请注意,您还可以使用其他web服务器。好的,所以您需要从本地数据库提供JSON,对吗 您不需要服务器,您可以直接从本地计算机为web页面提供服务(只需指向localhost) 所以,基本上(我知道这不会是完整的,但我希望这是一个好的开始) 你必须:
- 安装servlet容器(Tomcat或Jetty),它们非常易于使用
- 创建一个servlet或JSP页面来显示数据(JSP也很容易)
- 使用JDBC创建到本地数据库(如Derby)的连接
- 使用库将数据转换为JSON
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文件
接下来,转到tomcatwebapps
目录,它应该包含以下文件夹:
ROOT/
文档/
示例/
主机管理器/
经理/
创建一个新的文件,例如your
或其他文件,并在其中创建一个文件Hello.jsp
,其中包含以下内容:
Hello.jsp
----------
Hello, world
然后在浏览器中打开:http://localhost:8080/your/Hello.jsp
应该是这样的:
创建JDBC程序
接下来,在您的webappyour
中创建目录: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>