在.NET框架中,Access数据库是常用的轻量级数据库系统,尤其适合小型应用程序或学习数据库操作。本示例将介绍如何在.NET中不直接编写SQL语句来操作Access数据库,主要利用ADO.NET的数据提供者(例如System.Data.OleDb)以及DataSet和DataTable等对象。
我们需要引用ADO.NET相关的命名空间:
```csharp
using System.Data;
using System.Data.OleDb;
```
`DataOperate.cs` 文件可能包含了用于与数据库交互的类,这个类通常会封装数据库连接、查询、添加、更新和删除等操作。例如,创建一个`DataOperate`类,其中包含一个`ConnectDB`方法用于建立数据库连接:
```csharp
public class DataOperate
{
private string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=你的数据库文件路径;Jet OLEDB:Database Password=你的数据库密码;";
public OleDbConnection ConnectDB()
{
return new OleDbConnection(connectionString);
}
}
```
接下来,可以创建方法来执行数据库操作。例如,我们可以创建一个`ExecuteNonQueryWithoutSql`方法,该方法使用OleDbCommand对象的ExecuteNonQuery方法,它会执行存储过程或不返回任何数据的SQL命令:
```csharp
public int ExecuteNonQueryWithoutSql(OleDbCommand cmd)
{
using (var conn = ConnectDB())
{
conn.Open();
return cmd.ExecuteNonQuery();
}
}
```
在.NET中,DataSet和DataTable可以用来存储和操作数据,就像在内存中有一个临时的数据库。`DataInfo.cs` 文件可能定义了一个`DataTable`的子类或包含处理这些数据的类。例如,创建一个`DataInfo`类,包含一个`LoadData`方法来填充DataTable:
```csharp
public class DataInfo
{
public DataTable LoadData(string tableName)
{
var dt = new DataTable(tableName);
using (var conn = new DataOperate().ConnectDB())
{
OleDbDataAdapter adapter = new OleDbDataAdapter($"SELECT * FROM {tableName}", conn);
adapter.Fill(dt);
}
return dt;
}
}
```
对于添加新记录,可以使用`DataRow`对象的`SetAdded`方法,然后使用`OleDbDataAdapter`的`Update`方法:
```csharp
public void AddRecord(DataTable dt, Dictionary<string, object> data)
{
DataRow newRow = dt.NewRow();
foreach (var kvp in data)
{
newRow[kvp.Key] = kvp.Value;
}
newRow.SetAdded();
using (var conn = new DataOperate().ConnectDB())
{
OleDbDataAdapter adapter = new OleDbDataAdapter($"SELECT * FROM {dt.TableName}", conn);
adapter.UpdateCommand = new OleDbCommand("INSERT INTO [TableName] ([Column1], [Column2]) VALUES (?, ?)", conn);
adapter.UpdateCommand.Parameters.AddWithValue("@p1", data["Column1"]);
adapter.UpdateCommand.Parameters.AddWithValue("@p2", data["Column2"]);
adapter.Update(newRow);
}
}
```
更新和删除记录的操作类似,只需要调整`UpdateCommand`的SQL语句,并设置合适的参数。通过这种方式,我们可以在不直接编写SQL语句的情况下进行数据库操作,提高了代码的可读性和安全性。
总结,`.NET`操作`Access`数据库,不写SQL语句的方式主要依赖于ADO.NET的数据提供者,通过创建和使用`OleDbCommand`对象,结合`DataSet`和`DataTable`进行数据操作。这不仅可以避免直接处理SQL字符串带来的潜在安全问题,还可以使代码更加模块化和易于维护。在实际项目中,可以根据需求进一步扩展这些基础类,以适应更复杂的业务逻辑。