在html中显示sqlite数据库查询

时间:2012-06-14 18:05:13

标签: java javascript html perl sqlite

所以这就是我所拥有的,我有一个包含3个表的SQLite数据库:status,up_date&用户。该数据库位于服务器上。我需要对此运行以下查询:

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 /文本然后显示它?

感谢您的帮助。

3 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

您需要为此编写一些服务器端代码。服务器端JavaScript有一些选项:Node.jsclassic ASP。您知道您的Web服务器是否支持这些服务器吗?它是Windows还是* nix服务器?它是您的家庭服务器,您公司的服务器还是托管服务器?

在使用JavaScript的经典ASP中,它可能看起来像:

<%@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提供。

答案 2 :(得分: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中使用它。