无法隐式转换类型';System.Data.SqlClient.SqlDataReader';到';S
本文关键字:SqlClient Data SqlDataReader System 转换 类型 | 更新日期: 2023-09-27 18:05:57
我正在C#中使用3层架构进行一个项目。我编写了从SQL中对记录进行排序的代码。但它不返回任何值。
查询:
BEGIN
SELECT
Bank_Code, Bank_Name, Bank_ShortName, CreditCard_Commission_Percent
FROM
BankMaster
WHERE
bank_name LIKE '% + @BankName + %'
END
调用查询-BOL:
public DataSet SortBank()
{
try
{
SqlCommand cmd = new SqlCommand("SortBankMaster", dal.con);
cmd.Parameters.Add("@BankName", SqlDbType.NVarChar).Value = Bank_Name;
cmd.CommandType = CommandType.StoredProcedure;
return cmd.ExecuteReader(); // Error
}
catch (Exception ex)
{
throw ex;
}
}
UI:
public void FillSortBank()
{
try
{
DataSet ds = new DataSet();
bol.Bank_Name = txtsort.Text;
ds = bol.SortBank();
DGVBank.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是我的DAL:
public DataSet DBread(String Squery)
{
DataSet DSResult = new DataSet();
try
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
da = new SqlDataAdapter(Squery, con);
da.Fill(DSResult);
Console.WriteLine();
return DSResult;
}
catch (Exception ex)
{
//UnhandledExceptionHandler();
//return e.ToString();
throw ex;
//return DSResult;
}
}
感谢大家。。。。
....
using (SqlDataReader myReader = cmd.ExecuteReader())
{
DataTable myTable = new DataTable();
myTable.Load(myReader);
cmd.Connection.Close();
Dim myDataSet As New DataSet()
myDataSet.Tables.Add(myTable)
return myDataSet;
}
MSDN:使用iDataReader 加载DataTable
public DataSet SortBank()
{
try
{
SqlCommand cmd = new SqlCommand("SortBankMaster", dal.con);
cmd.Parameters.Add("@BankName", SqlDbType.NVarChar).Value = Bank_Name;
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adpt.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
不能仅将SqlDataReader转换为DataSet。如果您想要,可以使用SqlDataAdapter来填充数据集
SqlCommand cmd = new SqlCommand("SortBankMaster", dal.con);
cmd.Parameters.Add("@BankName", SqlDbType.NVarChar).Value = Bank_Name;
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
或者,如果不使用数据集,则可以使用DataTable。
DataTable dt = new DataTable();
da.Fill(dt);
DataTable.Fill可用于从读取器填充数据表。