数据集绑定后生成table1TableAdapter这个家伙,方法是:Fill(@tb_zz);对应Select的CommandText为 select id,tnote,tname from table1 where (tb_zz in(@tb_zz))如果用Fill(dataset,"2")就正常并返回一条结果在SQL Server Profiler中看到的变量 @tb_zz = '2' 可是如果用Fill(dataset,"2,3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2,3' 而用Fill(dataset,"2','3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2'',''3'
而用Fill(dataset,"2'',''3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2'''',''''3'
变量中含有单引号在SQL语句中就会变成双引号,在变量前加个@或加个\ 还是单引号变双引号,试了好多次都没办法成功,请各位帮解决下!感谢感谢!
而用Fill(dataset,"2'',''3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2'''',''''3'
变量中含有单引号在SQL语句中就会变成双引号,在变量前加个@或加个\ 还是单引号变双引号,试了好多次都没办法成功,请各位帮解决下!感谢感谢!
declare @sql varchar(300)
select @sql =
'select id,tnote,tname from table1 where (tb_zz in(' + @tb_zz + '))'
exec sp_executesql @sql
@tb_zz以下面这种格式传进去:'2','3'
可是这样就不能在数据集时直接绑定了啊,有没有更便捷的方法呢?
有没有办法能将SQL中变量的单引号返回的也是单引号呢!!
Select的CommandText为 select id,tnote,tname from table1 where (tb_zz in(@tb_zz)) 改成一个不带@tb_zz的参数就可以了呀,这个字符串在代码里拼接好以后在用就行了。关键是不能用参数,要拼接,和绑定有什么关系?
好像绑定后的TableAdapter update DataGridView中的数据是一起修改的吧,具体我也搞不清楚,只是保存后是一起保存的。
另你在上面说用拼成的SQL语句也行,可是拼成的语句我不知道怎么赋给TableAdapter的Selec中的CommandText,能说下吗?
tb_zz="2,3"
CommandText="select id,tnote,tname from table1 where (tb_zz in(" + tb_zz + "))"
{
SqlConnection conn = new SqlConnection("连接字符串");
conn.Open();
string sqlText = "select id,tnote,tname from table1 where (tb_zz in(@tb_zz))";
SqlCommand cmd = new SqlCommand(sqlText, conn);
SqlParameter parameter = new SqlParameter("@tb_zz", SqlDbType.VarChar, 50);
parameter.Value = "传进来对应tb_zz的值";
cmd.Parameters.Add(parameter);
conn.Close();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
大哥是TableAdapter而不是SqlDataAdapter啊,绑定后已经生成一个table1TableAdapter的东西了,并且SelectCommand.CommandText有值,我想重新给SelectCommand.CommandText赋值啊!
不过还是很感谢你的帮助!