0

所以这就是我所拥有的,我有一个带有 3 个表的 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/text 然后显示它?

谢谢你的帮助。

4

3 回答 3

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 
于 2012-06-14T18:12:45.140 回答
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 中使用它。

于 2014-11-07T17:01:33.537 回答
0

您需要为此编写一些服务器端代码。服务器端 JavaScript 有多种选择:Node.js经典 ASP。你知道你的网络服务器是否支持这些吗?它是 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 提供程序。另存为ASP文件,插入正确的数据库路径。在某些版本的 IIS 上,您必须显式启用经典 ASP。Connection 和 Recordset 对象由Microsoft ADO 库提供。

于 2012-06-14T18:10:11.833 回答