TL DR; Хочу некоторую справку Java с соединением с действительно локальной базой данных (никакой доступ к технологии сервера), или если можно сделать на скорую руку код, который будет работать. Все, что это должно сделать, запросить DB (Доступ MS, хотя может быть изменен), и произведите строку JSON. См. EDIT2 для большей специфики.
Править: Прежде чем любой скажет JDBC; я просмотрел учебные руководства (начал читать подробно), но большая часть из него, кажется, приспособлена к технологии сервера, к которой у меня нет доступа.
EDIT2: Кажется больше всего, что ответы до сих пор требуют установки некоторого вида, который я, к сожалению, не могу сделать (и отказавший для упоминания, таким образом, я приношу извинения). Однако это - то, что в настоящее время используется, и я хотел бы решение, подобное за Java, который сделает его большим количеством перекрестного браузера совместимый в противоположность тому, чтобы быть HTA только (ссылка: https://launchpad.net/accessdb)
Хорошо, для долгой версии. Я пытаюсь использовать локальную базу данных, чтобы создать настольное приложение стиля для работы (и возможно использовать знание для других проектов). База данных, которую я могу создать без проблемы (Доступ MS 2003, просто, оказывается, быстро доступен). В настоящее время я использую сценарии ActiveX для работы с базой данных в Приложении HTML (*.HTA работы файла только с Internet Explorer), я действительно хотел бы сделать это больше перекрестного браузера (в конечном счете, компания КОГДА-ЛИБО переключается на фактический браузер) при помощи JAVA для доступа к базе данных, затем произведите результаты в JSON к локальной переменной, которую JavaScript может назвать и использовать.
Честно быть бы учебная информация о типе, поскольку я хочу на самом деле изучить, почему это работает так, я могу позже изменить ее для удовлетворения моим потребностям. Мне установили Eclipse, а также JDK, и могу исправить небольшие программы в Java, таким образом, не абсолютно до полусмерти (но недалеко от :P). Я работал с JavaScript, таким образом, я могу прочитать довольно мало кода Java как есть (не тот же синтаксис, так как они не связаны, но мало, я действительно знаю о Java, который я могу перевести назад в JS без проблемы).
Так или иначе любая помощь значительно ценилась бы. Я могу продолжить разрабатывать с ActiveX (поскольку я знаю, что работы над системой и я на 99% уверен, что они продолжат использовать Internet Explorer, но, хотели бы некоторую гибкость).
Я не уверен, что хорошо понял ваши требования, однако я расшифровал некоторые ключевые моменты. То, что я предлагаю, позволит вам доставить полное рабочее приложение в виде единого пакета (скажем, JAR), который не потребует большой (если таковой имеется) конфигурации или администрирования серверов.
Некоторые необходимые навыки:
Я пытаюсь использовать локальный база данных для создания стиля рабочего стола заявление [...] Мне нужна помощь Java при подключении к действительно локальная база данных (нет доступа к server tech)
JDBC можно использовать с любой базой данных, имеющей драйвер JDBC, который не обязательно является базой данных в «сетевом режиме», он также может использоваться со встроенными базами данных.
Вот пример с Дерби во встроенном режиме :
Когда приложение обращается к Дерби база данных с использованием Embedded Derby JDBC водитель, двигатель Дерби не работает в отдельном процессе, и есть нет отдельных процессов базы данных для запускать и выключать. Вместо этого Ядро базы данных Derby работает внутри та же виртуальная машина Java (JVM), что и заявление. Итак, Дерби становится частью приложение, как и любое другое jar-файл, который использует приложение. На рисунке 1 изображена эта встроенная архитектура.
Вот несколько 100% Java и встраиваемые базы данных:
http://www.h2database.com/html/main.html
Вы также можете встроить веб-сервер, например Jetty .
У пристани есть слоган: «Не используйте свой приложение в Jetty, разверните Jetty в ваше приложение ". Это означает что в качестве альтернативы комплектации ваше приложение как стандартную WAR для будет развернут в Jetty, Jetty разработан как программный компонент который можно создать и использовать в Программа на Java, как и любой POJO.
Встраивание Jetty .
Обратите внимание, что есть другие веб-серверы, которые можно использовать таким образом.
В продолжение слов Оскара...
Вот простая JSP-страница "Введите SQL", использующая теги JSTL (Java Standard Tag Library).
Все, что вам нужно для того, чтобы это работало, это подкинуть библиотеку derby.jar.
Скачайте tomcat с сайта Apache.
Скачайте derby с Apache
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"%>
<!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>
mkdir WEB-INF
возьмите следующее и поместите в web. xml
<?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>
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.
Итак, вам нужно обслуживать JSON из локальной базы данных, верно?
Вам не нужен сервер, вы можете обслуживать веб-страницы прямо с вашей локальной машины (вам просто нужно указать на localhost)
Итак, в основном (и я знаю, что это не будет полным, но я надеюсь, что это хорошее начало)
Вы должны:
Установить tomcat
(я описываю для UNIX, но это то же самое для Windows)
Скачать его отсюда и затем разархивировать файл в какой-нибудь каталог, который вам нравится (например. /home/you/ или C:\Users\you\ )
Откройте терминал и перейдите в каталог tomcat bin
и введите catalina. sh run
, который запустит tomcat, у вас должна быть установлена Java
Откройте браузер в http://localhost:8080
Он должен выглядеть так:
Создайте JSP файл
Далее, перейдите в каталог tomcat webapps
, он должен содержать эти папки:
ROOT/
docs/
examples/
host-manager/
manager/
Создайте новую, например, your
или любую другую и внутри создайте файл Hello.jsp
со следующим:
Hello.jsp
----------
Hello, world
А затем откройте в браузере: http://localhost:8080/your/Hello.jsp
Должно выглядеть так:
Создание программы 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();
%>
И выполните ваш jsp снова, перейдя по адресу localhost:8080/your/Hello.jsp
Если вы выполните его дважды, система скажет вам, что таблица уже существует:
Это нормально, мы уже создали таблицу.
Использование библиотеки для вывода JSON
Выключите tomcat, но нажмите contrl-c
Скачайте и скопируйте в каталог WEB-INF/lib jar json-simple. Вы можете получить его из здесь
Запустите 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);
}
%>
:)
<script>
var list = <%=
getData()
%>
</script>
Обратите внимание, что мы используем импорт throw, и в конце мы изменяем вызов метода, чтобы поместить результат в переменную javascript list
После запуска страница JSP будет выглядеть следующим образом (вам придется щелкнуть правой кнопкой мыши, чтобы увидеть исходный код HTML, поэтому посмотрите тег ):
Надеюсь, вы найдете это полезным. Я постарался сделать его предельно простым для вас.
ВАЖНО Приведенный пример полон плохих практик, не пишите так (например, создание веб-приложений прямо в папке tomcat webapps, или выполнение SQL прямо из JSP страницы (не говоря уже о том, что не закрываются ресурсы и т.д.)
Основная идея была в том, чтобы дать вам достаточно информации для начала работы.
Есть способы интегрировать это с eclipse, и использовать SQL-визор, такой как клиент SquirrelSQL для манипулирования данными.
Это должно быть достаточно просто, я фактически загрузил файлы и создал тест во время написания этого ответа, так что все должно работать.