0

用户登录后,我需要一个页面,每个注册用户都有自己的 gridview 和绑定到他的 gridview 的控件。该页面将包含一个绑定到 gridview 的 sqldatasource。

我考虑过在数据库中为每个用户创建一个新表,并在表单加载中获取用户登录后的用户名,获取表名并将 sqldatasource 绑定到他的表名和表名的其他控件字段替换为他的。

或者有没有其他方法可以做到这一点?

4

4 回答 4

0

您当然不需要为每个用户提供单独的表!

为什么不向其中一个表添加一个附加来存储用户名。这样,每条记录都被标记为属于特定用户。读取登录用户的数据只是表上的一个简单Where子句。

于 2012-06-25T07:32:21.147 回答
0

不,那不对,您不能为每个用户创建一个表。想想如果您有 10,000 个用户,而不是您的数据库包含 10,000 个用户。

您只需创建一个保存所有用户信息的表。您必须将用户名或电子邮件等身份保存到您的数据库中,当用户通过其用户名或电子邮件登录您的应用程序时,将根据用户名或电子邮件从表中获取信息并设置为 gridview。

愿它帮助你...

于 2012-06-25T07:35:18.337 回答
0

为每个用户创建一个表是不合逻辑的,将所有用户信息保存在一个表中会更好更快,因为您可以使用用户 ID 为用户信息创建一个表,为用户数据输入另一个表。并建立关系他们之间的船

于 2012-06-25T07:36:56.610 回答
0

您绝对不想为每个用户创建一个单独的表。您打算如何将其扩展到多个用户?

用户需要在他们的页面上看到哪些数据?了解 gridview 不必直接映射到数据库表。它可以映射到任何数据集。因此,您可以以一种有意义的方式将数据存储在数据库中(关系实体),然后以一种有意义的方式查询和显示它。

例如(这是一个人为的例子,因为我们不知道您拥有什么数据),如果您的用户需要查看他们订购的产品列表,那么您不会为每个用户。您可能会为每个实体(用户、产品、订单等)创建一个表:

Users
----------
ID
Name
etc.

Products
----------
ID
Name
etc.

Orders
----------
ID
UserID
DateOrdered
etc.

而且由于每个订单都有一个产品列表,并且每个产品可以在多个订单上,这是一个多对多的关系。因此,您可以为该关系创建一个链接表:

OrderedProducts
----------
OrderID
ProductID

然后,为了在 UI 中显示,您将查询数据以仅获取该用户订购的产品:

SELECT DISTINCT
  Products.ID,
  Products.Name,
  Orders.OrderedDate
FROM
  Users
  INNER JOIN Orders ON Users.ID = Orders.UserID
  INNER JOIN OrderedProducts ON Orders.ID = OrderedProducts.OrderID
  INNER JOIN Products ON OrderedProducts.ProductID = Products.ID
WHERE
  Users.ID = @userID

这应该为您提供该用户订购的不同产品的列表以及订购时间。(请注意,此代码是徒手编写的,我没有方便的数据库来测试它。)

所以每个用户都会看到他们自己的特定信息。

您希望确保您的数据以可用的关系方式建模。定义您的实体(通常是您在数据中表示的真实事物)并定义表来表示这些实体。以自然的方式将它们联系在一起。关系数据库擅长处理针对定义明确的数据的复杂查询。不要试图从用户的角度围绕显示的性质设计您的数据库,而是围绕所存储信息的性质进行设计。

于 2012-06-25T07:37:55.593 回答