c#如何获取sql语句中@后面的参数名,
例如:sql="select*fromstuwhereusername=@unameandpassword=@pwd";cmd.CommandText=sql;但我想用方...
例如:
sql = "select * from stu where username=@uname and password=@pwd";
cmd.CommandText = sql;
但我想用方法获取sql字符串中@后面的名字,动态获取,而且不固定参数,有的语句为多个参数,因为cmd.parameters.add("@uname","abc")这种方法面局限性了,前面的参数得手动填写,我就是想用循环,自动遍历这些名字,然后传到cmd.parameters.addadd()方法中去。求高手解答。。。
纠正一下,打错一个方法:cmd.parameters.add()多写了个add... 展开
sql = "select * from stu where username=@uname and password=@pwd";
cmd.CommandText = sql;
但我想用方法获取sql字符串中@后面的名字,动态获取,而且不固定参数,有的语句为多个参数,因为cmd.parameters.add("@uname","abc")这种方法面局限性了,前面的参数得手动填写,我就是想用循环,自动遍历这些名字,然后传到cmd.parameters.addadd()方法中去。求高手解答。。。
纠正一下,打错一个方法:cmd.parameters.add()多写了个add... 展开
4个回答
展开全部
你可以使用sqlparameters这个类型的数组,
每次循环动态添加,最后清除参数.
每次循环动态添加,最后清除参数.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
split(sql,'@'.tocharry()) 然后再针对数组中每个元素进行字符串处理,转换为字节的写法忘记了,大体是这样。
追问
难道C#语言中没有自带的方法吗?微软怎么会忽略这么重要的功能。。唉,失望啊。实在没有输入法只有用切割的方法了。。
追答
暂时么有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提供一个完整的例子:
CREATE procedure [dbo].[user_logon]
@userid char(2),
@username nvarchar(50) output
as
declare @s varchar(1000)
begin
select @username=username,@s=userbm from shopuser where userid=@userid
if @username=null
begin
set @username='不存在该用户'
end
else
begin
set @s = 'select bmid +'''+' '+'''+bmmc from xsbm where bmid in ('+@s+')'
exec(@s)
end
end
GO
C#:
SqlCommand cmd = new SqlCommand("user_logon", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( new SqlParameter("@shopuserid",SqlDbType.Char,2){Value=tbxUserID.Text.Trim()});
cmd.Parameters.Add( new SqlParameter("@shopusername",SqlDbType.NVarChar, 50){Direction=ParameterDirection.Output} );
SqlDataReader dr = cmd.ExecuteReader();
label5.Text = Convert.ToString(cmd.Parameters["@shopusername"].Value);//显示username
while (dr.Read())
{
cbxKuzi.Items.Add(dr.GetString(0)); //填充登录部门
}
CREATE procedure [dbo].[user_logon]
@userid char(2),
@username nvarchar(50) output
as
declare @s varchar(1000)
begin
select @username=username,@s=userbm from shopuser where userid=@userid
if @username=null
begin
set @username='不存在该用户'
end
else
begin
set @s = 'select bmid +'''+' '+'''+bmmc from xsbm where bmid in ('+@s+')'
exec(@s)
end
end
GO
C#:
SqlCommand cmd = new SqlCommand("user_logon", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add( new SqlParameter("@shopuserid",SqlDbType.Char,2){Value=tbxUserID.Text.Trim()});
cmd.Parameters.Add( new SqlParameter("@shopusername",SqlDbType.NVarChar, 50){Direction=ParameterDirection.Output} );
SqlDataReader dr = cmd.ExecuteReader();
label5.Text = Convert.ToString(cmd.Parameters["@shopusername"].Value);//显示username
while (dr.Read())
{
cbxKuzi.Items.Add(dr.GetString(0)); //填充登录部门
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询