gpt4 book ai didi

c# - OleDbParameterCollection 没有定义构造函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:34 24 4
gpt4 key购买 nike

在我的项目中,我有一个处理数据库查询的 DBAdapter 类。

public class DBAdapter
{
private OleDbConnection _connection;

private void _Connect()
{
this._connection = new OleDbConnection();
_connection.ConnectionString = ConfigurationManager.AppSettings["Accessconnection"];
_connection.Open();
}

private void _Disconnect()
{
_connection.Close();
}


public DataTable Select(string query, OleDbParameterCollection parameters = null)
{

OleDbCommand cmd = new OleDbCommand();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
query = "SELECT " + query;

if (parameters != null)
{
foreach (OleDbParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}

this._Connect();
cmd.Connection = _connection;
cmd.CommandText = query;

if (parameters != null) {
cmd.Prepare();
}
dataAdapter.SelectCommand = cmd;
dataAdapter.Fill(dataSet, "results");
this._Disconnect();

dataTable = dataSet.Tables["results"];
return dataTable;
}

}

为了执行准备好的查询,Select 方法有一个可选的 OleDBParameterCollection 参数。然后,我的项目中的每个域对象都有多个映射器,例如 UserMapper,它们使用 DataAdapter 类来运行查询(例如按 ID 查找用户)。

    public class UserMapper : DataMapperAbstract
{

public User findByID(int id)
{
User user = new User()
string query = "* FROM USER WHERE idUser = ?";
OleDbParameterCollection parameters = new OleDbParameterCollection();
parameters.Add(new OleDbParameter("idUser", OleDbType.Integer).Value = id);

// Prepared query
DataTable results = adapter.Select(query, parameters);
this._populateData(user, results.Rows[0]);
return user;
}
}

不幸的是,我在这一行有错误

   OleDbParameterCollection parameters = new OleDbParameterCollection();

VS 说 OleDbParameterCollection 类型没有定义构造函数,我不太明白这里的问题是什么。也许我没有实例化 OleDbParameterCollection 的权限,但在那种情况下,我应该如何将参数集合传递给我的 DBAdapter 的方法?

最佳答案

OleDbParameterCollection不公开我们可以访问的公共(public)构造函数。它并不意味着以这种方式使用,只需更改您的方法参数以接受 OleDbParameter 列表而不是 OleDbParameterCollection :

public DataTable Select(string query, List<OleDbParameter> parameters = null)
{
}

然后相应地使用它:

List<OleDbParameter> parameters = new List<OleDbParameter>();
parameters.Add(new OleDbParameter("idUser", OleDbType.Integer){ Value = id });

// Prepared query
DataTable results = adapter.Select(query, parameters);

关于c# - OleDbParameterCollection 没有定义构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com