问题描述
stringstr="1,2,3,4,5";stringsql="select*fromuserswhereidin("+str+")";现在用存储过程怎么写,兄弟们?如果传入nvarchar类型的参数stringsql="select*fromuserswhereid=@id";这样就显示错误了,怎么办
解决方案
解决方案二:
十万火急你还发蛋贴!十万火急你还发到非技术区!
解决方案三:
引用1楼kakaniuren的回复:
十万火急你还发蛋贴!十万火急你还发到非技术区!
+1
解决方案四:
没分了
解决方案五:
存储过程是在数据库里写的,使用Parameter定义过程所需的参数,在输出参数定义的时候使用比如SqlParameterpara=newSqlParameter("@count",SqlDbType.Int);para.Direction=ParameterDirection.Output;//这样定义,如果是在数组中请自行变通//下面是我调用过程返回SqlDataReader的一个方法,可以按需要自己实现,供参考//procname即调用的过程名称//如果执行语句是用ExecuteNonQuery(),不用返回DataReader则可以定义为voidpublicSqlDataReaderpageproc(stringprocname,paramsSqlParameter[]para){SqlCommandscom=newSqlCommand(procname,con);scom.CommandType=CommandType.StoredProcedure;scom.Parameters.AddRange(para);con.Open();SqlDataReadersdr=scom.ExecuteReader(CommandBehavior.CloseConnection);//输出参数须在SqlDataReader关闭之后才有返回,如果调用scom.Paramenters.Clear();则会使输出参数获取不到returnsdr;}调用了过程之后获取过程的输出参数的值,以刚才定义的那个参数为例intcount=(int)para.Value;//如果返回的是DataReader,则要在DataReader关闭之后才能获取到
解决方案六:
看不懂你的意思啊,楼上
解决方案七:
SqlConnectionconn=newSqlConnection(MyConfig.ConnString());conn.Open();stringSql="execselectuser(存储过程名字)'"+PassWord1(需要传递的参数)+"'";SqlCommandcmd=newSqlCommand(Sql,conn);cmd.ExecuteScalar().ToString();
解决方案八:
引用6楼z_f_p的回复:
SqlConnectionconn=newSqlConnection(MyConfig.ConnString());conn.Open();stringSql="execselectuser(存储过程名字)'"+PassWord1(需要传递的参数)+"'";SqlCommandcmd=newSqlCommand(Sql,conn);……
不要最后的.ToString();最后应该是cmd.ExecuteScalar();
解决方案九:
不是啊,stringstr="1,2,3,4,5";stringsql="select*fromuserswhereidin("+str+")";这个是可以执行的但是如果把select*fromuserswhereidin@id写到数据库的存储过程里。怎么给@id设置类型呢nvarchar类型的?但肯定通不过运行啊。int型的,也不行
解决方案十:
你该发到技术区的
解决方案十一:
引用8楼reape的回复:
不是啊,stringstr="1,2,3,4,5";stringsql="select*fromuserswhereidin("+str+")";这个是可以执行的但是如果把select*fromuserswhereidin@id写到数据库的存储过程里。怎么给@id设置类型呢nvarchar类型的?但肯定通不过运行啊。i……
你也太扣了吧,,,,,发零蛋贴》》》》无限鼻屎你,好歹给个一分啊,,,,,你这样写是不行的,,,,createprocname@idvarvhar(50)asdeclare@strvarchar(500)set@str='select*fromuserswhereidin('@id')'exec(@str)要这样才行,,ok,,下次记得给分啊