如何在Internet Explorer中使用javascript和ADO连接两个SQL表

时间:2013-01-09 03:43:25

标签: javascript ado jscript activexobject

我正在使用Javascript和Internet Explorer的ActiveXObjects连接到SQL数据库。我可以毫无问题地从单个表中读出结果。不幸的是,我无法弄清楚连接同一数据库中的两个表的语法。这是我正在尝试的:

//create object
var conn = new ActiveXObject("ADODB.Connection");

//store credentials
var connectionstring = "Provider=sqloledb; Data Source={omitted}; Initial Catalog={omitted}; User ID={omitted};Password={omitted}";

//open the db connection with credentials
conn.Open(connectionstring);

//create a new record set
var rs = new ActiveXObject("ADODB.Recordset");

//search the record set with SQL call
rs.Open("SELECT * FROM [order] INNER JOIN OrderItems ON (order.Id = OrderItems.Id)", conn);

如果我删除“INNER JOIN”及其后的所有内容,我很好。请注意,我必须在第一个表的名称(“order”)周围放置括号,因为我认为它是受保护的关键字...任何人都知道Javascript中此类事物的正确语法?

1 个答案:

答案 0 :(得分:0)

这可能是您正在寻找的SQL语法:

SELECT Orders.Id
FROM [Orders] 
INNER JOIN OrderItems ON [Orders].Id = OrderItems.Id

请注意,()是不必要的。

如果要使用别名,则必须在JOIN子句的其余部分中使用这些别名:

SELECT o.Id 
FROM [Orders] o
INNER JOIN OrderItems oi ON o.Id = oi.Id

确定SQL后,您应该能够将其传递给Open方法:

var sql = 
    'SELECT Orders.Id ' +
    'FROM [Orders] ' +
    'INNER JOIN OrderItems ON [Orders].Id = OrderItems.Id';

rs.Open(sql, conn);