SqlConnection 连接方式的储存过程为: public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
由于项目需要,需要更改连接方式为OleDbConnection连接,参数不变/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
错误:BuildQueryCommand这个不存在,我知道它不属于 SqlClient,但是要怎么修改?要具体代码。
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
由于项目需要,需要更改连接方式为OleDbConnection连接,参数不变/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
错误:BuildQueryCommand这个不存在,我知道它不属于 SqlClient,但是要怎么修改?要具体代码。
MySqlCommand command = null;
MySqlDataReader reader = null; connection = new MySqlConnection(this._dbConnectionString);
command = new MySqlCommand(spName, connection);
command.CommandType = CommandType.StoredProcedure;
OleDbDataAdapter sqlDA = new OleDbDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
改为
OleDbDataAdapter sqlDA = new OleDbDataAdapter(storedProcName,connection);
sqlDA.SelectCommand.CommandType=CommandType.StoredProcedure;
sqlDA.SelectCommand.Parameters.Add(parameters);
//sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
基本方法实现用反射技术。。
//添加这个方法 private IDbCommand BuildQueryCommand(connection, storedProcName, parameters)
{
IDbCommand cmd = connection.CreateCommand();
foreach(IDataParameter para in parameters){
cmd.Parameters.Add(para);
}
cmd.CommandText =storedProcName;
return cmd;
}