2017-04-06 9 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

你可以給我一個鏈接的視頻教程關於我可以如何歸檔這個請嗎? –

相關問題