c#winform ADO.NET 先封装DbHelper类,实现数据库的增删查改,然后基于封装类进行数据库操作
时间: 2023-12-03 22:47:44 浏览: 314
Winform最基础的DBHelper类
好的,让我们来实现一个DbHelper类,它将提供基本的数据库操作功能(增删查改)。
首先,我们需要引用System.Data命名空间,它包含了ADO.NET的核心类和接口。
然后,我们定义一个DbHelper类,并提供以下方法:
1. ExecuteNonQuery:执行一个SQL语句并返回受影响的行数。
2. ExecuteScalar:执行一个SQL语句并返回结果集的第一行第一列。
3. ExecuteReader:执行一个SQL语句并返回一个DataReader对象,用于遍历结果集。
4. FillDataTable:执行一个SQL语句并返回一个DataTable对象,用于存储结果集。
下面是一个示例代码:
```
using System.Data;
using System.Data.SqlClient;
public class DbHelper
{
private readonly string connectionString;
public DbHelper(string connectionString)
{
this.connectionString = connectionString;
}
public int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddRange(parameters);
connection.Open();
return command.ExecuteNonQuery();
}
}
public object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddRange(parameters);
connection.Open();
return command.ExecuteScalar();
}
}
public SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
{
var connection = new SqlConnection(connectionString);
var command = new SqlCommand(sql, connection);
command.Parameters.AddRange(parameters);
connection.Open();
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
public DataTable FillDataTable(string sql, params SqlParameter[] parameters)
{
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sql, connection))
using (var adapter = new SqlDataAdapter(command))
{
command.Parameters.AddRange(parameters);
var dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
```
在上面的代码中,我们使用了using语句来确保资源的正确释放,同时也提高了代码的可读性。
现在我们可以使用这个DbHelper类来进行数据库操作了,例如:
```
var connectionString = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=True";
var dbHelper = new DbHelper(connectionString);
// 插入一条记录
var sql = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
var parameters = new[]
{
new SqlParameter("@Name", "张三"),
new SqlParameter("@Age", 20),
};
var affectedRows = dbHelper.ExecuteNonQuery(sql, parameters);
Console.WriteLine($"插入了{affectedRows}条记录");
// 查询记录
sql = "SELECT * FROM Users WHERE Age >= @Age";
parameters = new[]
{
new SqlParameter("@Age", 18),
};
var reader = dbHelper.ExecuteReader(sql, parameters);
while (reader.Read())
{
Console.WriteLine($"Name: {reader["Name"]}, Age: {reader["Age"]}");
}
reader.Close();
// 更新记录
sql = "UPDATE Users SET Age = @NewAge WHERE Name = @Name";
parameters = new[]
{
new SqlParameter("@NewAge", 25),
new SqlParameter("@Name", "张三"),
};
affectedRows = dbHelper.ExecuteNonQuery(sql, parameters);
Console.WriteLine($"更新了{affectedRows}条记录");
// 删除记录
sql = "DELETE FROM Users WHERE Name = @Name";
parameters = new[]
{
new SqlParameter("@Name", "张三"),
};
affectedRows = dbHelper.ExecuteNonQuery(sql, parameters);
Console.WriteLine($"删除了{affectedRows}条记录");
```
上面的代码演示了如何使用DbHelper类进行数据库操作,可以根据实际需要进行修改和扩展。
阅读全文