【发布时间】:2015-04-29 21:48:35
【问题描述】:
我收到以下错误:
无法隐式转换类型“System.Data.SqlClient.SqlDataReader” 到“Microsoft.ReportingServices.DataProcessing.IDataReader”。一个 存在显式转换(您是否缺少演员表?)
public IDataReader ExecuteReader(CommandBehavior behavior)
{
string query = "select * from Sales.Store";
SqlConnection readerconn = new SqlConnection("Data Source=localhost;Initial Catalog=AdventureWorks2000;Integrated Security=SSPI");
SqlCommand readercmd = new SqlCommand(query);
try
{
readerconn.Open();
readercmd = readerconn.CreateCommand();
readercmd.CommandText = query;
readercmd.CommandType = System.Data.CommandType.Text;
SqlDataReader TestReader = readercmd.ExecuteReader();
return TestReader; //Getting error at this line
readerconn.Close();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
根据 Radin Gospodinov 的建议修改代码后,我没有收到错误,但我无法将数据放入数据集中。这是修改后的代码
public class MySqlDataReader:Microsoft.ReportingServices.DataProcessing.IDataReader
{
private System.Data.IDataReader sourceDataReader;
private System.Data.DataTable dt;
private System.Data.DataSet ds;
public MySqlDataReader(System.Data.IDataReader datareader)
{
this.sourceDataReader = datareader;
}
public MySqlDataReader(System.Data.DataTable dt)
{
// TODO: Complete member initialization
this.dt = dt;
}
public MySqlDataReader(System.Data.DataSet ds)
{
// TODO: Complete member initialization
this.ds = ds;
}
public IDataReader ExecuteReader(CommandBehavior behavior)
{
string query = "select * from Sales.Store";
SqlConnection readerconn = new SqlConnection("Data Source=IE11DT4RJC6Q1;Initial Catalog=AdventureWorks2000;Integrated Security=SSPI");
SqlCommand readercmd = new SqlCommand(query);
try
{
readerconn.Open();
readercmd = readerconn.CreateCommand();
readercmd.CommandText = query;
readercmd.CommandType = System.Data.CommandType.Text;
SqlDataReader TestReader = readercmd.ExecuteReader();
//TestReader.Close();
readerconn.Close();
//readerconn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(query,readerconn);
adapter.SelectCommand = readercmd;
System.Data.DataSet ds = new System.Data.DataSet();
adapter.Fill(ds, "result");
System.Data.DataTable dt = new System.Data.DataTable();
adapter.Fill(dt);
readerconn.Close();
return new MySqlDataReader(ds);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
【问题讨论】:
标签: c#