2011-11-23 113 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