如何使用ASP& amp;和多个数据库选择用户信息? VB.NET?

时间:2012-12-13 02:57:32

标签: asp.net sql vb.net visual-web-developer sqlmembershipprovider

好的,好吧。 。 。我有一个Web应用程序,我正在使用ASP,VB.net等在Microsoft Visual Web Developer中开发,这将允许“卖家”发布“买家”的广告来查看。当买方搜索产品时,每个结果都需要显示卖方的名称和产品的信息。问题是保存各种产品信息的表位于一个数据库中,用户/成员信息存储在另一个数据库中。

我将提供一个例子。在这种情况下,买方正在搜索特定图书的所有广告。

  1. 每个广告都记录在数据库db_1和表[Results]中 ID_USER和ID_BOOK的列。
  2. 图书信息存储在db_1 [图书]中,其中包含ID,TITLE,AUTHOR列。
  3. 用户信息存储在单独的数据库db_2和表中 [用户]包含ID和NAME列。
  4. 鉴于此,我将如何做以下事情:


    SELECT u.Name [Seller]
    , b.Title [Title]
    , b.Author [Author]
    FROM db_1.Results r
    INNER JOIN db_1.Books b
    ON b.id = r.id_book
    INNER JOIN db_2.Users u
    ON u.id = r.id_user
    WHERE b.Title like 'Some Book Title'
    

    如果这些表位于同一个数据库中(我现在希望我已经完成),那么我可以轻松运行内连接或其他一些select语句来仅提取相关数据。我还考虑过创建数据集并加入它们(例如http://www.vb-helper.com/howto_net_dataset_foreign_key.html),但这不会太过庞大吗?

    我对SQL语句的态度不错,但我所有的知识都来自谷歌和实践,所以如果我忽略了每个经过专业训练的程序员都知道的一些重要警告,我道歉。提前感谢您的帮助。

    更新:我想我会更新情况。问题实际上与权限没有任何关系。问题是VWD找不到对象。我通过使用CROSS JOIN并在select语句中明确声明.mdf文件的目录路径来解决了这个问题。再次感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如上面的@rs所示,您的查询将进行微小的更改。数据库名称和表名称之间的中间部分dbo是对象的所有者名称。如果所有者拥有两个模式的权限,并且您的用户ID有权从两个数据库中进行选择,则查询将起作用。

SELECT u.Name [Seller]
, b.Title [Title]
, b.Author [Author]
FROM db_1.dbo.Results r
INNER JOIN db_1.dbo.Books b
ON b.id = r.id_book
INNER JOIN db_2.dbo.Users u
ON u.id = r.id_user
WHERE b.Title like 'Some Book Title'

答案 1 :(得分:1)

以下是使用sql server管理工具

在数据库和grant select权限中使用相同用户的简单步骤
  • 转到db1>安全>用户>新用户。
  • 单击登录名并浏览名称并选择您要使用的用户
  • 转到db2>安全>用户>新用户。
  • 单击登录名并浏览名称,然后从上面的db1中选择相同的用户
  • 转到db2中的user table,右键单击并转到属性单击 权限和单击搜索按钮从上面找到相同的用户和 选择该用户
  • 在“用户或角色”框中,选择“用户”,然后转到“权限”面板 在下面选中Grant for select,然后单击确定。

对希望数据库用户从数据库2访问的所有表重复上一步