ADO连接数据库拼接字符窜问题

xiatiandetonghua 2011-09-03 03:31:41
sql = string.Format("use {0} select name from sysobjects where type='U' order by name", name);
SqlCommand com = new SqlCommand(sql, conn);
如果这样拼接字符窜的话容易被sql注入,但是用如果用
SqlCommand com = new SqlCommand("use @Name select name from sysobjects where type='U' order by name", conn);
com.Parameters.AddWithValue("@Name",name);
这种办法会报没有声明@Name。
请教各位大哥和牛人帮小弟想个办法。

...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dalmeeme 2011-09-04
  • 打赏
  • 举报
回复
sql语句中某些位置是不能使用参数的。
你可以对name进行验证,判断是否合法,主要看是否包含一些sql注入的字符,如单引号、注释符号之类。另外限制name的长度,这样一般没问题。
krenyelang 2011-09-04
  • 打赏
  • 举报
回复
可以用简单一点嘛,何必要那么麻烦!
用using(){}不就可以解决防止SQL注入……
MSDNXGH 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 evil_steve 的回复:]
那你声明一个 不就行了
SqlParamare spr=new XX(new SqlPara("@name",value));
[/Quote]
正解

SqlParameter[] parameters = {
new SqlParameter("@MenuID", SqlDbType.Int,4)};
parameters[0].Value = model.MenuID;
  • 打赏
  • 举报
回复
这个思路是错误的。
因为你查询的数据库在连接字符串中就确定了,你在这里写没用的。
你连接字符串写的是数据库A,你查询的就是数据库A的表,你连接那个数据库就查询那个数据库,不需要在查询语句前面再加上数据库的名称。
xiatiandetonghua 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wxr0323 的回复:]

order by [name]

不赞成这样链接。
[/Quote]
那有什么好办法吗?
子夜__ 2011-09-04
  • 打赏
  • 举报
回复
order by [name]

不赞成这样链接。
LMAOhuaNL 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuchaolin 的回复:]

new SqlCommand("exec('use'+ @Name +' select name from sysobjects where type=''U'' order by name')", conn);


type=''U'' 这里不记得是两个单引还是三个单引了,你自己试一下type='''U'''
[/Quote]
md5e 2011-09-03
  • 打赏
  • 举报
回复
new SqlCommand("exec('use'+ @Name +' select name from sysobjects where type=''U'' order by name')", conn);


type=''U'' 这里不记得是两个单引还是三个单引了,你自己试一下type='''U'''
Im_Sorry 2011-09-03
  • 打赏
  • 举报
回复
你写的这种方法错误的,

SqlParamare[] s=new SqlParamare[3]

evil_steve 2011-09-03
  • 打赏
  • 举报
回复
那你声明一个 不就行了
SqlParamare spr=new XX(new SqlPara("@name",value));

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧