2017-04-06 8 views
0

我有一个基于会计系统的项目。我有一张表Sales。但是,当用户注册时,他/她将被重定向到登录页面。从那里,他们可以登录到他们的账户。ASP.NET:如何防止SQL Server中的某个表数据不被另一个用户在帐户登录中登录

我要如何防止多个用户在登录时不要共享相同的数据?我将如何为他们每个人分离数据?

看看这个。我有以下表格:

Users

  • 的Uid
  • 名称
  • 电子邮件
  • 密码
  • 确认密码

Sales

  • 的Uid
  • 产品
  • 数量

我在sales表相关的UID在users表UID列。当我加载用户的帐户页面时,我想要执行用T-SQL或C#编写的页面加载代码,它可以调用SQL命令从用户表中读取用户的Uid,并选择该用户保存的相应数据表来分隔由其他用户保存的数据。

我已经研究过,但即使从论坛上我也没有明确得到解决方案。我希望有人请不要告诉我,但要告诉我一步一步的代码,我将如何存档这个?

请有人可以帮助我吗?我确实堆积了。 。:(

+0

难道你不能只是构建你的应用程序不显示他们从该表中的数据?现在大多数体系结构都不限制数据库本身,而是通过应用程序限制事物。 – mason

回答

1

你正在寻找被称为数据库中加入什么T-SQL就像这样:

SELECT s.* 
FROM dbo.Sales AS s 
INNER JOIN dbo.Users AS u ON u.UID = s.UID 
WHERE u.UID = @YourUserID 

没什么特别的,没有神奇的(无交易/隔离级别,这是一个完全不同的话题) ,只是普通的SQL

这可能是相当大的帮助(在此图之前,我钻它太深忘记坐在钉在我的墙上几个月):https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

enter image description here

有很多方法可以在应用程序层实现它。通常你将有机会获得当前登录的用户ID的地方,此时您可以使用ADO:

public List<SalesInfo> GetSalesInfo(int userID) { 

    using (SqlConnection conn = new SqlConnection(_connectionString)) 
     using (SqlCommand cmd = new SqlCommand(conn)) { 

      cmd.CommandText = "SELECT s.* FROM ..." // insert sql statement here 
      cmd.Parameters.AddWithValue("@YourUserID", userID); 

      var adapter = new SqlDataAdapter(cmd); 
      var table = new DataTable(); 

      conn.Open(); 
      adapter.Fill(table); 
      conn.Close(); 

      var results = new List<SalesInfo>(); 

      foreach (DataRow row in table.Rows) { 
       results.Add(new SalesInfo() { 
        SomeProperty = row['ColumnName'].ToString(), 
        OtherProperty = int.Parse(row['OtherColumn']) 
       }); 
      } 

      return results;   
     } 
} 

(注意,有小于在上面的代码的最佳实践:仅用于演示目的)

或者你可以建立实体框架,这是很容易,一旦它的配置为使用:

var salesData = _context.SalesData.Where(x => x.UserID == myUserID).ToList(); 

所有的一切,还有约1000多种皮肤这只猫。但从两个表获取相关数据是一个简单的数据库级连接。在你的应用中消费,就像你会。

+0

那么,我要写这些代码来执行..这是在一个类,如果是的话,我怎么打电话给用户的页面帐户加载这些功能 –

+0

对不起,但这不是一个教程/教室类型的网站 - 更“提出具体问题并获得具体答案”类型的东西。你所要求的几乎涵盖了如何设置一个应用程序(数据层,逻辑层,用户界面等)的全部范围:你要求的全部内容。我建议找一个更完整的教程,参加一些课程,或者雇用一名导师/教练来指导你完成各个方面的任务:即使是所有这些东西如何协同工作的基础知识,在S/O处传达。祝你好运! – jleach

+0

你可以给我一个链接的视频教程关于我可以如何归档这个请吗? –

相关问题