数据集没有';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();
}

抱歉我英语不好。

数据集没有';t不返回任何行

错误出现在由单引号包围的参数占位符中。通过这种方式,您可以将占位符转换为文字字符串。并且您的查询找不到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";