System.Data
System.Data
是.NET框架中的一个命名空间,它提供了一系列用于处理数据的类和接口,主要用于与数据库进行交互、数据缓存和数据操作。System.Data
是.NET数据访问的核心,广泛应用于各种.NET应用程序中,无论是桌面应用、Web应用还是移动应用。主要功能
1. 数据访问
System.Data
提供了与数据库进行交互的功能,包括连接数据库、执行SQL命令、读取数据等。2. 数据集和数据表
System.Data
提供了 DataSet
和 DataTable
类,用于在内存中存储和操作数据。这些类支持数据的缓存、筛选、排序和更新。3. 数据适配器
System.Data
提供了 DataAdapter
类,用于在数据源和 DataSet
或 DataTable
之间传输数据。4. 数据绑定
System.Data
支持将数据绑定到用户界面控件,如 DataGridView
、ComboBox
等,使得数据的显示和更新更加方便。常用类和接口
1. DataSet
类
DataSet
是一个内存中的数据容器,可以包含多个 DataTable
和 DataRelation
,用于存储和操作数据。-
创建和使用
DataSet
csharpusing 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
类
DataTable
是 DataSet
的一部分,用于存储单个表的数据。-
创建和使用
DataTable
csharpusing 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
是一个桥接数据源和 DataSet
或 DataTable
的类,用于填充数据和更新数据源。-
使用
DataAdapter
从数据库加载数据csharpusing 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
读取数据csharpusing 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());
}
}
注意事项
-
数据库连接管理
-
确保在使用完毕后关闭数据库连接,避免资源泄漏。可以使用
using
语句来自动管理资源。
-
-
SQL注入防护
-
使用参数化查询来防止SQL注入攻击,确保应用程序的安全性。
-
-
性能优化
-
在处理大量数据时,注意性能优化,避免长时间占用数据库连接。
-
总结
System.Data
提供了一套强大的工具,用于处理数据访问和操作。通过使用 DataSet
、DataTable
、DataAdapter
和 DataReader
等类,开发者可以轻松地与数据库进行交互,实现数据的读取、存储和更新。同时,System.Data
支持数据绑定,使得数据的显示和更新更加方便,提升了开发效率和用户体验。