将数据从SQL检索到类中

本文关键字:检索 SQL 数据 | 更新日期: 2023-09-27 18:15:27

假设我的SQL数据库包含一个名为" Customer "的表。这个客户有一个ID、一个名字、一个姓氏和一个图像(byte[])。

我想要的是客户端上具有一个int,两个strings和一个byte[]的类型(类)。然后将每条记录读入其中的每一个。

我知道一点c#,但是当涉及到使用c#访问时,我是一个新手,尽管我已经能够从远程服务器上拉下记录。我只是想在它们到达客户端后对它们进行排序。

编辑:好吧,看起来我对人们的喜好有点模糊,所以让我澄清一下。我知道如何创建一个类,并且我已经查找了有关使用ADO将数据从SQL数据库带入c#项目的详细信息。净命令。

我想知道的是如何将SQL表中的信息镜像为c#项目中的对象。例如,我从表中下载了一条记录,它进入了一个对象。

以前我用过Silverlight,它有一个EDMX模型和一个域服务类。如果有人熟悉这种行为,那基本上就是我想模仿的。我会使用它,但我面临的一个限制是,我只能使用应用程序端,而不能使用网站。

谢谢。

将数据从SQL检索到类中

这里有一个关于如何使用数据阅读器检索数据的简短示例:

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。

您正在讨论创建一个ORM(对象-关系映射器),这有点太宽泛了,无法在这里用一个答案完整地回答。

这里有一个关于如何编写的详细教程。

然而,应该注意的是,已经有大量的。net ORM工具,其中许多已经在本网站的其他问题中列出,例如这个

看看这篇关于为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 to SQL来理解排序位,有一个.OrderBy(f=>f.Name);你可以应用于对你的数据集进行排序。

需要更多关于你所追求的信息吗?

您应该考虑使用SqlConnectionSqlCommand,并在DataTable中填写您需要的信息。