繁体   English   中英

如何使用ASP和VB.NET选择包含多个数据库的用户信息?

[英]How do I select user information with multiple databases using ASP & VB.NET?

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

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

  1. 每个广告都记录在数据库db_1和表[Results]中,其中包含ID_USER和ID_BOOK的列。
  2. 书籍信息存储在db_1 [Books]中,其中包含ID,TITLE,AUTHOR列。
  3. 用户信息存储在单独的数据库db_2和表[Users]中,其中包含ID和NAME列。

鉴于此,我将如何做以下事情:


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文件的目录路径来解决了这个问题。 再次感谢您的帮助。

如上面的@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'

以下是使用sql server管理工具在数据库和grant select权限中使用相同用户的简单步骤

  • 转到db1> security> users>新用户。
  • 单击登录名并浏览名称,然后选择要使用的用户
  • 转到db2> security> users>新用户。
  • 单击登录名并浏览名称,然后从上面的db1中选择相同的用户
  • 转到db2中的user table ,右键单击并转到属性单击权限,然后单击搜索按钮从上面查找相同的用户并选择该用户
  • 在“用户或角色”框中选择用户,然后转到下面的“权限”面板,选中“授予”选择,然后单击“确定”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM