C# 数据集没有返回任何行吗?
我不知道为什么我对带有参数的dataset的方法不起作用, 有人能调试或解释为什么我的代码不返回任何内容吗 这是我的数据集代码C# 数据集没有返回任何行吗?,c#,winforms,datagridview,ado.net,dataset,C#,Winforms,Datagridview,Ado.net,Dataset,我不知道为什么我对带有参数的dataset的方法不起作用, 有人能调试或解释为什么我的代码不返回任何内容吗 这是我的数据集代码 public DataSet executeDataSet(String sql, Dictionary<String, Object> parameters) { try { cmd = new SqlCommand(sql, conn); foreach (KeyValuePair<String, Object&
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";
我们不知道你有什么数据,或者文本框包含什么,这让你很难得到帮助…抱歉,我忘了包括这些,我正在为我的程序构建一个搜索函数,搜索表名SessionType当前在txtbox输入的数据info@Steve我的连接字符串当前已在我的app.config中声明这是我的连接字符串:嗯,我尝试了你的代码,但是LIKE操作符需要一个引号,我尝试在我的参数中连接它,就像这个参数一样。Add@1,“+txtbox_Search.Text+%”;但它仍然并没有返回我期望的结果。使用参数化查询的许多好处之一是不加任何引号。无论是在命令文本中还是在参数值中。我建议使用调试器查看作为参数传递的值value@steve您的权利,我删除了引号在我的参数,它的工作很好,感谢现在我只需要调试和尝试,如果它是倾向于SQL注入