当前位置:编程学习 > C#/ASP.NET >>

一个十万火急的问题!

string str = "1,2,3,4,5";

string sql = "select * from users where id in (" + str + ")";

现在用存储过程怎么写,兄弟们?

如果传入nvarchar类型的参数 string sql = "select * from users where id =@id";

这样就显示错误了,怎么办



--------------------编程问答-------------------- 十万火急你还发蛋贴!十万火急你还发到非技术区! --------------------编程问答--------------------
引用 1 楼 kakaniuren 的回复:
十万火急你还发蛋贴!十万火急你还发到非技术区!


+1 --------------------编程问答-------------------- 没分了 --------------------编程问答-------------------- 存储过程是在数据库里写的,
使用Parameter定义过程所需的参数,在输出参数定义的时候使用比如
SqlParameter para = new SqlParameter("@count", SqlDbType.Int);
para.Direction = ParameterDirection.Output;//这样定义,如果是在数组中请自行变通

//下面是我调用过程返回SqlDataReader的一个方法,可以按需要自己实现,供参考
//procname即调用的过程名称
//如果执行语句是用ExecuteNonQuery(),不用返回DataReader则可以定义为void
         public SqlDataReader pageproc(string procname, params SqlParameter[] para)
        {
            SqlCommand scom = new SqlCommand(procname, con);
            scom.CommandType = CommandType.StoredProcedure;
            scom.Parameters.AddRange(para);
            con.Open();
            SqlDataReader sdr = scom.ExecuteReader(CommandBehavior.CloseConnection);
            //输出参数须在SqlDataReader关闭之后才有返回,如果调用scom.Paramenters.Clear();则会使输出参数获取不到
            return sdr;
        }

调用了过程之后获取过程的输出参数的值,以刚才定义的那个参数为例
int count=(int)para.Value;//如果返回的是DataReader,则要在DataReader关闭之后才能获取到
--------------------编程问答-------------------- 看不懂你的意思啊,楼上 --------------------编程问答-------------------- SqlConnection conn = new SqlConnection(MyConfig.ConnString());
                    conn.Open();
                    string Sql = "exec selectuser(存储过程名字) '"+ PassWord1(需要传递的参数) + "'";
                    SqlCommand cmd = new SqlCommand(Sql, conn);
                    cmd.ExecuteScalar().ToString();
--------------------编程问答--------------------
引用 6 楼 z_f_p 的回复:
SqlConnection conn = new SqlConnection(MyConfig.ConnString());
  conn.Open();
  string Sql = "exec selectuser(存储过程名字) '"+ PassWord1(需要传递的参数) + "'";
  SqlCommand cmd = new SqlCommand(Sql, conn);
  ……


不要最后的.ToString();
最后应该是cmd.ExecuteScalar(); --------------------编程问答-------------------- 不是啊,string str = "1,2,3,4,5";

string sql = "select * from users where id in (" + str + ")";

这个是可以执行的

但是如果把 select * from users where id in @id 写到数据库的存储过程里。怎么给@id设置类型呢 nvarchar类型的? 但肯定通不过运行啊。int型的,也不行 --------------------编程问答-------------------- 你该发到技术区的 --------------------编程问答--------------------
引用 8 楼 reape 的回复:
不是啊,string str = "1,2,3,4,5";

string sql = "select * from users where id in (" + str + ")";

这个是可以执行的

但是如果把 select * from users where id in @id 写到数据库的存储过程里。怎么给@id设置类型呢 nvarchar类型的? 但肯定通不过运行啊。i……





你也太扣了吧 ,,,,,发零蛋贴》》》》无限鼻屎你,好歹给个一分啊 ,,,,,


你这样写是不行的,,,,
create proc name
@id varvhar(50)
as
declare @str varchar(500)
set @str='select * from users where id in ('@id')'
exec(@str)

要这样才行,,ok,,下次记得给分啊
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,