数据集没有';t不返回任何行
本文关键字:返回 任何行 数据集 | 更新日期: 2023-09-27 18:00:20
我不知道为什么我的带有参数的数据集方法不起作用,有人能调试或解释为什么我的代码什么都不返回吗。
这是我的数据集代码
public DataSet executeDataSet(String sql, Dictionary<String, Object> parameters)
{
try
{
cmd = new SqlCommand(sql, conn);
foreach (KeyValuePair<String, Object> row in parameters)
{
cmd.Parameters.AddWithValue(row.Key, row.Value);
}
ds = new DataSet();
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return ds;
}
这是在我的DAL中调用方法的代码,该方法将加载我的datagridview中的数据,称为dataGrid_SessionType
public void loadData(string sql, Dictionary<string,object> param)
{
DAL dal = new DAL(ConfigurationManager.ConnectionStrings["SADConnectionString"].ConnectionString);
DataSet ds = new DataSet();
ds = dal.executeDataSet(sql,param);
try
{
dataGrid_SessionType.DataSource = ds.Tables[0].DefaultView;
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
这里有另一个方法,它将调用loadData()并传递所需的参数
private void btn_Search_Click(object sender, EventArgs e)
{
string sql = "Select SessionType_ID as ID, SessionType_Name as 'Session Name', SessionType_Desc as 'Session Description', Status from SessionType WHERE Status = 'Available' and SessionType_Name LIKE '@1'";
Dictionary<string, object> param = new Dictionary<string, object>();
param.Add("@1",txtbox_Search.Text+"%");
loadData(sql, param);
txtbox_Search.Clear();
}
抱歉我英语不好。
错误出现在由单引号包围的参数占位符中。通过这种方式,您可以将占位符转换为文字字符串。并且您的查询找不到SessionType_Name
字段中包含字符串@1的任何行。您应该删除参数占位符周围的单引号。
string sql = @"Select SessionType_ID as ID, SessionType_Name as 'Session Name',
SessionType_Desc as 'Session Description', Status from SessionType
WHERE Status = 'Available' and SessionType_Name LIKE @1";