在C#编程中,连接和操作数据库是常见的任务,尤其是对于开发Windows Forms应用程序或Web应用程序。这段代码展示了如何使用C#连接到SQL Server数据库并执行存储过程。以下是对该代码的详细解释:
我们看到定义了几个关键的类变量:
- `SqlConnection myconn`:用于创建与SQL Server的连接。
- `SqlCommand mycomm`:用于执行SQL命令,包括存储过程。
- `SqlDataReader mydr`:用于读取查询结果,虽然在这个例子中没有用到。
在`Form1`类的构造函数中,初始化了`SqlConnection`和`SqlCommand`对象,并设置了连接字符串。连接字符串 `"server=PC-200908300906;database=school;integrated security=sspi"` 表示连接到名为 `school` 的数据库,服务器名称为 `PC-200908300906`,并且使用Windows身份验证(即SSPI)进行身份验证。
`Form1_Load` 方法是窗体加载时触发的事件,这里主要设置了数据库连接和命令对象。`CommandType.StoredProcedure` 指定 `mycomm` 将执行一个存储过程,`CommandText = "pr_insert_student"` 是要执行的存储过程的名称。
`button1_Click` 方法是当用户点击按钮时触发的事件。这个方法执行以下步骤:
1. 设置 `mycomm` 的 `CommandType` 为 `CommandType.StoredProcedure`,表明接下来的操作将执行一个存储过程。
2. 设置 `CommandText` 为存储过程的名称。
3. 清除已有的参数列表,然后添加新的参数。这里用两种方式添加参数,一是直接使用 `mycomm.Parameters.Add()`,二是通过创建 `SqlParameter` 对象后再添加。两种方式效果相同,都是设置参数名、数据类型、大小和值。这些参数对应于存储过程 `pr_insert_student` 中的输入参数:`@studentCode`、`@studentName` 和 `@studentSex`,值分别从文本框 `textBox1`、`textBox2` 和 `textBox3` 获取。
4. 如果数据库连接关闭,则打开连接。
5. 使用 `ExecuteNonQuery()` 方法执行存储过程,它返回受影响的行数。如果返回值小于等于0,表示没有成功插入记录,此时显示一个消息框。
存储过程 `pr_insert_student` 的定义如下:
```sql
create procedure pr_insert_student
@studentCode nchar(12),
@studentName nchar(20),
@studentSex nchar(1)
as
insert into student(studentCode, studentName, studentSex)
values (@studentCode, @studentName, @studentSex)
```
这个存储过程接收三个参数,分别代表学生的编码、姓名和性别,然后将这些值插入到 `student` 表中。
总结起来,这段代码演示了C#如何使用ADO.NET(特别是`SqlConnection`和`SqlCommand`类)连接到SQL Server数据库并执行存储过程,以及如何处理用户输入的数据。在实际项目中,你可能还需要添加异常处理、日志记录以及更复杂的业务逻辑来确保程序的健壮性和安全性。