System.Data

System.Data 是.NET框架中的一个命名空间,它提供了一系列用于处理数据的类和接口,主要用于与数据库进行交互、数据缓存和数据操作。System.Data 是.NET数据访问的核心,广泛应用于各种.NET应用程序中,无论是桌面应用、Web应用还是移动应用。

主要功能

1. 数据访问

System.Data 提供了与数据库进行交互的功能,包括连接数据库、执行SQL命令、读取数据等。

2. 数据集和数据表

System.Data 提供了 DataSetDataTable 类,用于在内存中存储和操作数据。这些类支持数据的缓存、筛选、排序和更新。

3. 数据适配器

System.Data 提供了 DataAdapter 类,用于在数据源和 DataSetDataTable 之间传输数据。

4. 数据绑定

System.Data 支持将数据绑定到用户界面控件,如 DataGridViewComboBox 等,使得数据的显示和更新更加方便。

常用类和接口

1. DataSet 类

DataSet 是一个内存中的数据容器,可以包含多个 DataTableDataRelation,用于存储和操作数据。
  • 创建和使用 DataSet
    csharp
    复制
    using System;
    using System.Data;
    
    class Program
    {
        static void Main()
        {
            DataSet dataSet = new DataSet("MyDataSet");
    
            // 创建一个 DataTable
            DataTable table = new DataTable("MyTable");
            table.Columns.Add("Id", typeof(int));
            table.Columns.Add("Name", typeof(string));
    
            // 添加数据行
            table.Rows.Add(1, "Alice");
            table.Rows.Add(2, "Bob");
    
            // 将 DataTable 添加到 DataSet
            dataSet.Tables.Add(table);
    
            // 遍历 DataTable
            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine($"Id: {row["Id"]}, Name: {row["Name"]}");
            }
        }
    }
     

2. DataTable 类

DataTableDataSet 的一部分,用于存储单个表的数据。
  • 创建和使用 DataTable
    csharp
    复制
    using System;
    using System.Data;
    
    class Program
    {
        static void Main()
        {
            DataTable table = new DataTable("MyTable");
            table.Columns.Add("Id", typeof(int));
            table.Columns.Add("Name", typeof(string));
    
            table.Rows.Add(1, "Alice");
            table.Rows.Add(2, "Bob");
    
            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine($"Id: {row["Id"]}, Name: {row["Name"]}");
            }
        }
    }
     

3. DataAdapter 类

DataAdapter 是一个桥接数据源和 DataSetDataTable 的类,用于填充数据和更新数据源。
  • 使用 DataAdapter 从数据库加载数据
    csharp
    复制
    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    class Program
    {
        static void Main()
        {
            string connectionString = "your_connection_string_here";
            string query = "SELECT * FROM Users";
    
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet, "Users");
    
                DataTable table = dataSet.Tables["Users"];
                foreach (DataRow row in table.Rows)
                {
                    Console.WriteLine($"Id: {row["Id"]}, Name: {row["Name"]}");
                }
            }
        }
    }
     

4. DataReader 类

DataReader 是一个快速、只读、向前游标的类,用于从数据库读取数据。
  • 使用 DataReader 读取数据
    csharp
    复制
    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    class Program
    {
        static void Main()
        {
            string connectionString = "your_connection_string_here";
            string query = "SELECT * FROM Users";
    
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(query, connection);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
    
                while (reader.Read())
                {
                    Console.WriteLine($"Id: {reader["Id"]}, Name: {reader["Name"]}");
                }
            }
        }
    }
     

数据绑定

示例代码:将数据绑定到 DataGridView

csharp
复制
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

public class MainForm : Form
{
    private DataGridView dataGridView1;

    public MainForm()
    {
        dataGridView1 = new DataGridView();
        dataGridView1.Dock = DockStyle.Fill;
        this.Controls.Add(dataGridView1);

        LoadData();
    }

    private void LoadData()
    {
        string connectionString = "your_connection_string_here";
        string query = "SELECT * FROM Users";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, "Users");

            dataGridView1.DataSource = dataSet.Tables["Users"];
        }
    }

    [STAThread]
    public static void Main()
    {
        Application.Run(new MainForm());
    }
}
 

注意事项

  1. 数据库连接管理
    • 确保在使用完毕后关闭数据库连接,避免资源泄漏。可以使用 using 语句来自动管理资源。
  2. SQL注入防护
    • 使用参数化查询来防止SQL注入攻击,确保应用程序的安全性。
  3. 性能优化
    • 在处理大量数据时,注意性能优化,避免长时间占用数据库连接。

总结

System.Data 提供了一套强大的工具,用于处理数据访问和操作。通过使用 DataSetDataTableDataAdapterDataReader 等类,开发者可以轻松地与数据库进行交互,实现数据的读取、存储和更新。同时,System.Data 支持数据绑定,使得数据的显示和更新更加方便,提升了开发效率和用户体验。
posted @ 2025-05-15 14:54  yinghualeihenmei  阅读(33)  评论(0)    收藏  举报