当前位置:首页 > 行业动态 > 正文

c# 查询数据库后转换

在C#中,查询数据库后可通过使用 DataReaderDataTableEntity Framework等将结果转换为所需格式。

C#查询数据库后转换数据

在C#中,查询数据库并将结果转换为特定格式是一个常见的任务,这通常涉及使用ADO.NET或Entity Framework等技术来连接和查询数据库,然后将结果转换为所需的数据类型或结构,以下是如何进行这些操作的详细步骤:

使用ADO.NET查询数据库

ADO.NET是微软提供的一组类库,用于与各种数据源交互,以下是一个使用ADO.NET查询SQL Server数据库并读取数据的示例:

using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        string queryString = "SELECT id, name FROM Customers";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine("ID: {0}, Name: {1}", reader["id"], reader["name"]);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

将查询结果转换为自定义对象

我们希望将查询结果转换为更易于使用的自定义对象,以下是一个示例,展示如何将查询结果转换为一个Customer类的实例列表:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
}
class Program
{
    static void Main()
    {
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        string queryString = "SELECT id, name FROM Customers";
        List<Customer> customers = new List<Customer>();
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    Customer customer = new Customer
                    {
                        Id = Convert.ToInt32(reader["id"]),
                        Name = reader["name"].ToString()
                    };
                    customers.Add(customer);
                }
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
        // 现在可以使用customers列表了
        foreach (var customer in customers)
        {
            Console.WriteLine($"ID: {customer.Id}, Name: {customer.Name}");
        }
    }
}

3. 使用Entity Framework查询和转换数据

Entity Framework(EF)是一个ORM(对象关系映射)框架,可以简化数据库操作,以下是一个使用EF Core查询数据库并将结果转换为自定义对象的示例:

using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class MyDbContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;");
    }
}
class Program
{
    static void Main()
    {
        using (var context = new MyDbContext())
        {
            var customers = context.Customers.ToList(); // 查询数据库并转换为Customer对象列表
            foreach (var customer in customers)
            {
                Console.WriteLine($"ID: {customer.Id}, Name: {customer.Name}");
            }
        }
    }
}

FAQs

Q1: ADO.NET和Entity Framework有什么区别?

A1: ADO.NET是一个低级别的数据访问API,提供了直接与数据库交互的功能,适用于需要精细控制数据库操作的场景,Entity Framework是一个ORM框架,提供了更高级别的抽象,使开发者可以通过操作对象而不是直接编写SQL语句来进行数据库操作,适合快速开发和维护复杂的数据模型。

Q2: 使用Entity Framework有哪些优势?

A2: 使用Entity Framework的优势包括:简化数据访问代码、支持LINQ查询、自动生成实体类、处理数据库迁移、支持多种数据库后端、提供强大的异常处理机制等,它能够提高开发效率,减少错误,并使代码更易于维护。