在C#窗体应用开发中,连接数据库是实现数据持久化存储和读取的核心操作,通常借助ADO.NET提供的类库完成,主流场景是连接SQL Server数据库,整个流程包含引用命名空间、配置连接字符串、执行数据库操作三个核心环节。

核心依赖命名空间
首先需要引入操作数据库所需的命名空间,这些命名空间包含了连接、执行命令、读取数据的相关类:
using System.Data; using System.Data.SqlClient;
连接字符串配置
连接字符串是建立数据库连接的关键参数,需要包含数据库服务器地址、数据库名称、身份验证方式等信息,以下是连接本地SQL Server数据库的常见配置:
// 如果是Windows身份验证 string connStr = "Server=.;Database=TestDB;Integrated Security=True;"; // 如果是SQL Server身份验证 string connStr = "Server=.;Database=TestDB;User Id=sa;Password=123456;";
其中Server表示数据库服务器地址,Database表示要连接的数据库名称,Integrated Security为True时表示使用Windows身份验证,False时需要使用账号密码验证。
完整连接与查询示例
以下是在窗体按钮点击事件中实现连接数据库并查询数据的完整代码,包含异常处理和资源释放逻辑:
private void btnQuery_Click(object sender, EventArgs e)
{
string connStr = "Server=.;Database=TestDB;Integrated Security=True;";
// 创建数据库连接对象
using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
// 打开数据库连接
conn.Open();
// 定义查询SQL语句
string sql = "SELECT Id, UserName, Age FROM UserInfo";
// 创建命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
// 执行查询并获取读取器
SqlDataReader reader = cmd.ExecuteReader();
// 循环读取数据
while (reader.Read())
{
int id = reader.GetInt32(0);
string userName = reader.GetString(1);
int age = reader.GetInt32(2);
// 将数据输出到窗体文本框,假设文本框名为txtResult
txtResult.AppendText($"Id:{id}, 用户名:{userName}, 年龄:{age}rn");
}
reader.Close();
MessageBox.Show("数据查询完成");
}
catch (Exception ex)
{
MessageBox.Show("数据库连接或查询失败:" + ex.Message);
}
// using语句会自动释放conn资源,无需手动调用Close
}
}
插入数据示例
除了查询操作,插入数据也是常用场景,以下是插入用户数据的代码示例:
private void btnInsert_Click(object sender, EventArgs e)
{
string connStr = "Server=.;Database=TestDB;Integrated Security=True;";
using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
conn.Open();
// 参数化SQL语句,避免SQL注入
string sql = "INSERT INTO UserInfo (UserName, Age) VALUES (@UserName, @Age)";
SqlCommand cmd = new SqlCommand(sql, conn);
// 添加参数,假设界面有txtName和txtAge两个输入框
cmd.Parameters.AddWithValue("@UserName", txtName.Text.Trim());
cmd.Parameters.AddWithValue("@Age", Convert.ToInt32(txtAge.Text.Trim()));
// 执行插入操作,返回受影响的行数
int rows = cmd.ExecuteNonQuery();
if (rows > 0)
{
MessageBox.Show("数据插入成功");
}
else
{
MessageBox.Show("数据插入失败");
}
}
catch (Exception ex)
{
MessageBox.Show("插入操作失败:" + ex.Message);
}
}
}
注意事项
- 连接字符串中的服务器地址和数据库名称需要根据实际环境修改,避免连接失败
- 所有数据库操作对象尽量使用
using语句包裹,确保资源及时释放,避免内存泄漏 - 执行SQL语句时优先使用参数化查询,不要直接拼接字符串,防止SQL注入攻击
- 实际开发中可以将连接字符串放到配置文件中,方便后续修改和维护
C#窗体数据库连接SqlConnectionADO.NETSQL语句修改时间:2026-07-17 02:21:26