2011-11-23 53 views
-4

比方說,我的SQL數據庫包含一個名爲'Customer'的表。此客戶有一個ID,名字,姓氏和圖像(byte[])。從SQL中檢索數據到類中

我想是具有int,二stringsbyte[]客戶端上的類型(類)。然後每個記錄將被讀入其中每一個。

我對C#有一點了解,但是當涉及到使用C#訪問時,儘管我已經能夠從遠程服務器下拉記錄,但我還是一個新手。我只是想在他們到達客戶端後對其進行分類。

編輯:好的,看起來我對人們的喜好有點模糊,所以讓我澄清一下。我知道如何創建一個類,並且我已經查詢了使用ADO.NET命令將數據從SQL數據庫傳輸到C#項目的細節。

我想知道的是如何將SQL表中的信息作爲C#項目中的對象進行鏡像。因此,例如,我從我的表格下載一條記錄,它會進入一個對象。

以前我用過Silverlight,它有一個EDMX模型和一個域服務類。如果任何人都熟悉這種行爲,這基本上是我試圖效仿的。我會使用它,但我面臨的侷限性之一是我僅限於單獨使用應用程序,而不是網站。

謝謝。

+1

問題是什麼? – JonH

+0

這個問題太廣泛了。你想要做的是DataAccess並將數據綁定到一個對象。我確信已經有大量的信息了。 – hunter

+2

你應該做一個谷歌搜索的LINQ to SQL教程,並。 –

回答

4

你在說的是創建一個ORM(對象關係映射器),它有點太廣泛,無法在這裏單獨回答。

有一個關於如何寫一個here的詳細教程。

但是,應該指出的是,有大量的ORM工具.NET已經在那裏,其中許多人在這個網站的其他問題,如this one已經上市。

2

看看this關於爲CLR映射數據類型的文章。 下面是一個客戶一個類定義:

public class Customer { 
public int ID {get;private set;} 
public string fName {get; set;} 
public string lName {get; set;} 
public byte[] image {get; set;} 
} 

你可能想在LINQ看向SQL瞭解排序位,還有一個.OrderBy(f=>f.Name);您可以應用數據集做一個訂單。

需要更多關於你的信息?

+0

+1一個良好的開端。我猜他根本不知道從哪裏開始。 – David

+0

把它分解成更小的部分,我只能根據問題的內容回答。希望它能讓他開始。 – JonH

6

下面就如何使用數據讀取器檢索數據很短的例子:

var customers = new List<Customer>(); 
string sql = "SELECT * FROM customers"; 
using (var cnn = new SqlConnection(
    "Data Source=Your_Server;Initial Catalog=Your_Database;Integrated Security=SSPI;")) { 
    cnn.Open(); 
    using (var cmd = new SqlCommand(sql, cnn)) 
    using (SqlDataReader reader = cmd.ExecuteReader()) { 
     // Get ordinals from the customers table 
     int custIdOrdinal = reader.GetOrdinal("CustomerID"); 
     int nameOrdinal = reader.GetOrdinal("Name"); 
     int imageOrdinal = reader.GetOrdinal("Image"); 
     while (reader.Read()) { 
      var customer = new Customer(); 
      customer.CustomerID = reader.GetInt32(custIdOrdinal); 
      customer.Name = reader.IsDBNull(nameOrdinal) 
          ? null 
          : reader.GetString(nameOrdinal); 
      if (!reader.IsDBNull(imageOrdinal)) { 
       var bytes = reader.GetSqlBytes(imageOrdinal); 
       customer.Image = bytes.Buffer; 
      } 
      customers.Add(customer); 
     } 
    } 
} 

如果表列可以爲空,然後檢索數據之前檢查reader.IsDBNull。

0

你應該考慮使用SqlConnectionSqlCommand和填充您所需要的信息DataTable