2012-06-14 33 views
0

所以這就是我所擁有的,我有一個SQLite數據庫與3個表:狀態,up_date &用戶。該數據庫位於服務器上。我需要運行以下查詢:在html中顯示一個sqlite數據庫查詢

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 - OP發佈了更多標籤,其中一個是Perl。無論如何 - 你如何在JavaScript中使用它來保護訪問數據庫的密碼? –

0

您需要爲此編寫一些服務器端代碼。有服務器端JavaScript的選項:Node.jsclassic ASP。你知道你的Web服務器是否支持其中的任何一種?它是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和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中使用過這個實驗。