简介:C#是一种广泛使用的编程语言,在数据库操作方面具有强大的功能。本指南将介绍C#中的SQL CRUD(创建、读取、更新、删除)操作的基础知识,包括使用Windows Forms、ADO.NET和数据绑定。通过实践任务,学生将掌握如何使用C#连接数据库、执行SQL命令、管理数据集,并实现数据在界面和数据库之间的双向绑定。
1. C#基础
C#是一种面向对象、强类型、编译型的高级编程语言。它由微软开发,作为.NET框架的一部分。C#语法与Java类似,但它具有更强大的类型系统和更丰富的特性集。
C#广泛用于开发各种应用程序,包括桌面应用程序、Web应用程序、移动应用程序和游戏。它以其高性能、可扩展性和代码可重用性而闻名。
2. Windows Forms简介
2.1 Windows Forms概述
Windows Forms(简称WinForms)是Microsoft .NET Framework中用于创建图形用户界面(GUI)的类库。它提供了一组丰富的控件,可用于设计和开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序。
WinForms基于Windows Presentation Foundation(WPF)技术,但它更轻量级、易于使用,并且与较旧的Windows版本兼容。它使用事件驱动的编程模型,允许开发人员轻松处理用户交互和应用程序逻辑。
2.2 控件和布局
WinForms应用程序由各种控件组成,这些控件提供了不同的功能和外观。控件可以是简单的文本框、按钮或更复杂的控件,如数据网格和图表。
WinForms提供了一系列布局管理器,用于组织和排列控件。最常用的布局管理器是:
- 流布局管理器: 控件按顺序排列,从左到右或从上到下。
- 表格布局管理器: 控件排列在行和列的网格中。
- 网格布局管理器: 控件排列在嵌套的行和列网格中。
2.3 事件处理
事件是用户与应用程序交互时触发的动作。WinForms使用事件驱动的编程模型,允许开发人员定义事件处理程序来响应这些事件。
事件处理程序是附加到控件或窗体的代码块,当触发特定事件时执行。例如,可以为按钮定义一个事件处理程序,当用户单击按钮时执行。
private void button1_Click(object sender, EventArgs e)
{
// 当用户单击按钮时执行的代码
}
在上面的示例中, button1_Click
方法是为 button1
控件定义的事件处理程序。当用户单击 button1
时,将执行此方法中的代码。
3. SQL CRUD操作概述
3.1 CRUD操作简介
CRUD(Create、Read、Update、Delete)操作是数据库中用于管理数据的基本操作。它们分别对应于创建、读取、更新和删除数据。
创建(Create) :将新数据插入到数据库表中。
读取(Read) :从数据库表中检索数据。
更新(Update) :修改数据库表中现有数据。
删除(Delete) :从数据库表中删除数据。
3.2 SQL语句语法
SQL(Structured Query Language)是用于与数据库交互的标准语言。它提供了一组命令,用于执行CRUD操作和其他数据库操作。
3.2.1 创建表
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
...
);
参数说明:
-
table_name
:要创建的表的名称。 -
column1
、column2
:表的列名称。 -
data_type
:列的数据类型(例如,INT
、VARCHAR
、DATETIME
)。
3.2.2 插入数据
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
参数说明:
-
table_name
:要插入数据的表名称。 -
column1
、column2
:要插入数据的列名称。 -
value1
、value2
:要插入的数据值。
3.2.3 查询数据
SELECT column1, column2, ...
FROM table_name
WHERE condition;
参数说明:
-
column1
、column2
:要查询的列名称。 -
table_name
:要查询的表名称。 -
condition
:查询条件(例如,WHERE id = 1
)。
3.2.4 更新数据
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
参数说明:
-
table_name
:要更新数据的表名称。 -
column1
、column2
:要更新的列名称。 -
value1
、value2
:要更新的数据值。 -
condition
:更新条件(例如,WHERE id = 1
)。
3.2.5 删除数据
DELETE FROM table_name
WHERE condition;
参数说明:
-
table_name
:要删除数据的表名称。 -
condition
:删除条件(例如,WHERE id = 1
)。
4. ADO.NET简介
4.1 ADO.NET概述
ADO.NET(ActiveX Data Objects .NET)是Microsoft开发的一组用于在.NET应用程序中访问和操作数据的类和接口。它提供了与各种数据源(如关系数据库、XML文件和Web服务)交互的统一接口。
ADO.NET的目的是简化数据访问,并提供一个一致的编程模型,无论底层数据源是什么。它基于ADO(ActiveX Data Objects)技术,但针对.NET Framework进行了重新设计和优化。
ADO.NET架构的主要组件包括:
- 数据提供程序: 用于与特定数据源(如SQL Server、Oracle或MySQL)进行通信的组件。
- 连接对象: 用于建立和管理与数据源的连接。
- 命令对象: 用于执行SQL语句或存储过程。
- 数据适配器: 用于在DataSet和数据源之间传输数据。
- DataSet: 用于在内存中表示数据。
4.2 数据提供程序和连接对象
数据提供程序
数据提供程序是ADO.NET的核心组件,它允许应用程序与特定数据源进行通信。每个数据源都有一个对应的特定数据提供程序。例如,要连接到SQL Server数据库,需要使用System.Data.SqlClient命名空间中的SqlClient数据提供程序。
连接对象
连接对象表示与数据源的连接。它用于打开、关闭和管理与数据源的连接。要创建连接对象,可以使用以下代码:
using System.Data.SqlClient;
string connectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True;";
SqlConnection connection = new SqlConnection(connectionString);
其中,connectionString指定连接到数据源所需的信息,如服务器名称、数据库名称和安全凭据。
一旦创建了连接对象,就可以使用Open方法打开连接,并使用Close方法关闭连接。
5. 连接数据库
5.1 连接字符串
连接字符串是用来建立数据库连接的信息字符串。它包含了连接到数据库所需的所有必要信息,例如服务器名称、数据库名称、用户名和密码。
连接字符串的格式如下:
Data Source=serverName;Initial Catalog=databaseName;User ID=username;Password=password;
其中:
- Data Source :指定数据库服务器的名称或 IP 地址。
- Initial Catalog :指定要连接的数据库的名称。
- User ID :指定连接数据库的用户名。
- Password :指定连接数据库的密码。
示例:
Data Source=localhost;Initial Catalog=Northwind;User ID=sa;Password=password123;
此连接字符串将连接到名为 Northwind 的数据库,该数据库位于名为 localhost 的服务器上,使用用户名 sa 和密码 password123 。
5.2 打开和关闭连接
在连接到数据库之前,需要先打开连接。可以使用 Open 方法打开连接:
using System.Data.SqlClient;
namespace DatabaseConnection
{
class Program
{
static void Main(string[] args)
{
// 创建连接字符串
string connectionString = "Data Source=localhost;Initial Catalog=Northwind;User ID=sa;Password=password123;";
// 创建连接对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
// 打开连接
connection.Open();
// 执行查询或其他操作
// 关闭连接
connection.Close();
}
}
}
}
代码逻辑分析:
- 创建连接字符串,其中包含连接到数据库所需的信息。
- 创建一个 SqlConnection 对象,并使用连接字符串作为参数。
- 使用 Open 方法打开连接。
- 在 using 语句中执行查询或其他数据库操作。
- 使用 Close 方法关闭连接。
参数说明:
- connectionString :连接到数据库的连接字符串。
注意:
- 始终在 using 语句中打开和关闭连接,以确保在使用后释放连接资源。
- 如果在打开连接时遇到错误,则 Open 方法将引发 SqlException 。
6. 执行SQL命令
6.1 Command对象
Command对象是ADO.NET中用于执行SQL命令的类。它提供了一个统一的接口,允许开发者使用不同的数据提供程序执行SQL命令。
构造Command对象
using System.Data;
using System.Data.SqlClient;
// 创建一个连接对象
SqlConnection connection = new SqlConnection("connectionString");
// 创建一个Command对象
SqlCommand command = new SqlCommand("SELECT * FROM Customers", connection);
Command对象属性
Command对象具有以下重要的属性:
- CommandText: 要执行的SQL命令文本。
- CommandType: 指定命令的类型,可以是
Text
(默认)或StoredProcedure
。 - Connection: 指定命令关联的连接对象。
- Parameters: 一个包含命令参数的集合。
- Transaction: 指定命令关联的事务对象。
6.2 参数化查询
参数化查询是一种使用参数而不是直接在SQL命令中指定值的查询。它可以防止SQL注入攻击,并提高查询性能。
创建参数化查询
// 创建一个参数
SqlParameter parameter = new SqlParameter("@customerID", SqlDbType.Int);
parameter.Value = 1;
// 将参数添加到Command对象
command.Parameters.Add(parameter);
// 执行命令
SqlDataReader reader = command.ExecuteReader();
参数化查询的好处
- 防止SQL注入攻击: 参数化查询将参数值与SQL命令文本分开,从而防止恶意用户通过SQL注入攻击修改命令。
- 提高性能: 参数化查询可以提高性能,因为数据提供程序可以预编译命令并缓存执行计划。
- 提高可读性: 参数化查询使SQL命令更易于阅读和理解。
参数类型
ADO.NET支持多种参数类型,包括:
- Int32
- String
- DateTime
- Decimal
- Boolean
参数方向
参数还可以指定方向,包括:
- Input: 默认方向,表示参数值从调用者传递到数据库。
- Output: 表示参数值从数据库传递到调用者。
- InputOutput: 表示参数值在调用者和数据库之间传递。
7. 数据适配器和数据集
7.1 数据适配器
数据适配器是ADO.NET中用于在DataSet和数据源之间传输数据的对象。它充当数据源和DataSet之间的桥梁,允许在两者之间进行数据的读取、更新和删除操作。
// 创建一个数据适配器
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers", connection);
数据适配器具有以下主要方法:
- Fill(DataSet) :将数据从数据源填充到DataSet中。
- Update(DataSet) :将DataSet中的更改更新到数据源。
- DeleteCommand :指定用于删除数据的SQL命令。
- InsertCommand :指定用于插入数据的SQL命令。
- UpdateCommand :指定用于更新数据的SQL命令。
7.2 数据集
DataSet是ADO.NET中表示内存中数据集合的对象。它包含一个或多个DataTable,每个DataTable代表一个表。DataSet还包含一个DataRelation集合,用于指定DataTable之间的关系。
// 创建一个DataSet
DataSet dataSet = new DataSet();
// 使用数据适配器填充DataSet
adapter.Fill(dataSet);
DataSet具有以下主要属性:
- Tables :获取DataSet中包含的DataTable集合。
- Relations :获取DataSet中包含的数据关系集合。
- HasChanges :指示DataSet中是否存在未提交的更改。
- AcceptChanges() :接受DataSet中的所有更改。
- RejectChanges() :拒绝DataSet中的所有更改。
简介:C#是一种广泛使用的编程语言,在数据库操作方面具有强大的功能。本指南将介绍C#中的SQL CRUD(创建、读取、更新、删除)操作的基础知识,包括使用Windows Forms、ADO.NET和数据绑定。通过实践任务,学生将掌握如何使用C#连接数据库、执行SQL命令、管理数据集,并实现数据在界面和数据库之间的双向绑定。