2012-06-14 2 views
0

Итак, это то, что у меня есть, у меня есть база данных SQLite с 3 таблицами: статус, up_date & пользователей. Эта база данных находится на сервере. Мне нужно выполнить следующий запрос по этому вопросу:отображает запрос базы данных sqlite в html

SELECT USR.name, USR.cymer_id, ST.license 
FROM 
users USR, 
status ST, 
upd_ate UD 
WHERE 
UD.upt_id = (select max(p2.upt_id) from upd_ate p2) 
AND ST.cymer_id = USR.cymer_id 
AND ST.upt_id = UD.upt_id 
ORDER BY USR.name 

А затем отобразить результат на веб-странице с помощью HTML.

Мне было интересно, есть ли способ сделать это с помощью java/javascript? или я могу написать код java/perl/javascript, чтобы получить xml/текст вывода, а затем отобразить это?

Благодарим за помощь.

+0

Ой, кстати, если вы ожидаете, что SO напишет кусок сразу же полезного кода для вас, вы не в том месте. Слишком много неустановленных переменных для этого. –

ответ

2

В Perl используйте CGI для генерации HTML-страниц и DBI для запроса к базе данных:

#!/usr/bin/perl 

use strict; 
use warnings; 
use CGI; 
use DBI; 

my $q = CGI->new; 
print $q->header, $q->start_html('hello'), '<table>'; 

my $dbh = DBI->connect("dbi:SQLite:dbname=mydatabase.db", "", "", {}); 

my $query = <main::DATA>; 
my $query_handle = $dbh->prepare($query); 
$query_handle->execute(); 
$query_handle->bind_columns(\my($id, $name, $license)); 

while($query_handle->fetch()) { 
    print "<tr><td>$id</td><td>$name</td><td>$license</td></tr>\n" 
} 

$query_handle->finish; 
$dbh->disconnect; 

print '</table>', $q->end_html; 

__DATA__ 
SELECT USR.cymer_id, USR.name, ST.license 
FROM users USR, status ST, upd_ate UD 
WHERE 
    UD.upt_id = (select max(p2.upt_id) from upd_ate p2) 
    AND ST.cymer_id = USR.cymer_id 
    AND ST.upt_id = UD.upt_id 
ORDER BY USR.name 
+0

О, мальчик, продвигающий Perl/CGI в этот день и в возрасте ... –

+0

Если бы я знал больше о серверной платформе OP, я бы предложил что-то в Java или JavaScript, что OP явно предпочитает. –

+0

@SevaAlekseyev - ОП опубликовал свой вопрос с большим количеством тегов, и один из них - Perl. В любом случае - как бы вы это сделали в JavaScript для защиты пароля для доступа к db? –

0

Для этого вам потребуется написать код сервера. Есть варианты для серверного JavaScript: Node.js, classic ASP. Вы знаете, поддерживает ли ваш веб-сервер какой-либо из них? Это сервер Windows или * nix? Это ваш домашний сервер, сервер вашей компании или размещенный?

В классическом ASP с JavaScript, это может выглядеть следующим образом:

<%@Language="javascript"%> 
<html><body><table> 
<% 
var conn = Server.CreateObject("ADODB.Connection"); 
conn.Open("Provider=OleSQLite.SQLiteSource;Data Source=PATH_TO_DATABASE"); 

var rs = conn.Execute("SELECT USR.cymer_id, USR.name, ST.license 
    FROM users USR, status ST, upd_ate UD 
    WHERE UD.upt_id = (select max(p2.upt_id) from upd_ate p2) 
     AND ST.cymer_id = USR.cymer_id 
     AND ST.upt_id = UD.upt_id ORDER BY USR.name"); 

rs.MoveFirst(); 
while(!rs.EOF) 
{ 
%> 
<tr> 
<td><%=Server.HtmlEncode(rs["cymer_id"])%></td> 
<td><%=Server.HtmlEncode(rs["name"])%></td> 
<td><%=Server.HtmlEncode(rs["license"])%></td> 
</tr> 
<% 
    rs.MoveNext(); 
} 
rs.Close(); 
conn.Close(); 

%> 
</table></body></html> 

Вам необходимо установить SQLite OLE DB provider. Сохранить как файл ASP, подключите правильный путь к базе данных. В некоторых версиях IIS вам необходимо явно включить классический ASP. Объекты Connection and Recordset предоставляются Microsoft ADO library.

+0

это сервер компании; Я только начал здесь, я не уверен, поддерживает ли он любой из них, его Windows Server; но у меня также есть база данных, доступная локально, поэтому я могу заставить ее работать. Какие еще переменные я должен предоставить? – user1285

0

В Perl (на коробке Unix) быстрый и грязный способ сделать это:

open(HTML, ">$htmlFile" or die "**error: unable to write to file '$htmlFile', $!\n"); 
print HTML `echo "SELECT * FROM holds;" | sqlite3 -html holds_data.db`; 
close(HTML); 

Я не экспериментировал с этим в Windows.

Смежные вопросы