求一个比较好的动态获取url参数的方案???

qingYun1029 2011-03-31 11:30:21
描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼接SQL语句。
例如:http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
注意,上面的参数有可能只有两个、一个也可以没有,参数的类型有int和string

后台有什么好的方法动态拼接没有???
求解

拼接出来的sql语句,例

string strSql = "select col1,col2,col3 from t_name where pram1=1 and pram2=中文 and pram3=类型 and pram4=哈哈";
...全文
292 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluespahetti 2013-08-28
  • 打赏
  • 举报
回复

public static string getHeadTail(String url)
    {
        System.Net.WebResponse wr_result = null;
        StringBuilder txthtml = new StringBuilder();
        try
        {
            System.Net.WebRequest wr_req = System.Net.WebRequest.Create(url);
            wr_result = wr_req.GetResponse();
            System.IO.Stream ReceiveStream = wr_result.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
            System.IO.StreamReader sr = new System.IO.StreamReader(ReceiveStream, encode);
            if (true)
            {
                Char[] read = new Char[256];
                int count = sr.Read(read, 0, 256);
                while (count > 0)
                {
                    String str = new String(read, 0, count);
                    txthtml.Append(str);
                    count = sr.Read(read, 0, 256);
                }
            }
        }
        finally
        {
            if (wr_result != null)
            {
                wr_result.Close();
            }
        }
        return txthtml.ToString();
    }
callmesai 2011-03-31
  • 打赏
  • 举报
回复
直接全部参数用一个连接符号拼接在一起~接收页面再spilce~~

不过要注意防注入~
qingYun1029 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tao145 的回复:]

http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
将红色部分截取下来str=url.Substring(url.IndexOf('?')+1);

C# code

string commandText = "select * from TableName where 1=1";
string[] ……
[/Quote]

谢谢了。。
很好!!!
qingYun1029 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fangxinggood 的回复:]

在sql文最后加上"where 1=1"然后就挨个判断拼接。

string strSql = "select .... from where 1=1";
if (a不为空)
+= "and A=a";
if (b不为空)
+= "and B=b";
if (c不为空)
+= "and C=c";
[/Quote]

谢谢,这个方法不错。
我用的ajax,感觉注入不是那么“明显”!!!
qingYun1029 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sp1234 的回复:]

引用楼主 qingyun1029 的回复:
描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼接SQL语句。
例如:http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
注意,上面的参数有可能只有两个、一个也可以没有,参数的类型有int和string

后台……
[/Quote]

明白,讲的很清楚、细致!
谢谢!
lifusong890910 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]
你获取的时候判断是否为空。

Request.QueryString["a"]=null?"":Request.QueryString["a"];
这样来判断。

然后过滤下 拼接就行了

Request.QueryString.Count 获取参数个数 在进一步判断
[/Quote]
+1
  • 打赏
  • 举报
回复
[Quote=引用楼主 qingyun1029 的回复:]
描述:前台以get方式提交,url带的参数不定!后台需要动态获取参数拼接SQL语句。
例如:http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
注意,上面的参数有可能只有两个、一个也可以没有,参数的类型有int和string

后台有什么好的方法动态拼接没有???
求解

拼接出来的sql语句,例……
[/Quote]

获取url参数就是使用 Request.QueryString[name]来获取。当它返回null值则表示没有这个参数。参数一律都是string,你需要自己转换为数据真正的强类型。对于string类型的值,当拼接到sql字符串时,需要处理参数值中的单引号(而不是简单地拼接到字符串)。
  • 打赏
  • 举报
回复
呵呵
qingYun1029 2011-03-31
  • 打赏
  • 举报
回复
晕了,写错了。
qingYun1029 2011-03-31
  • 打赏
  • 举报
回复
谢谢了。
我用的Oracle数据库,
select * from T_name where 1==1;就报错了

继续求解
笑道江湖情 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tao145 的回复:]
http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
将红色部分截取下来str=url.Substring(url.IndexOf('?')+1);


C# code

string commandText = "select * from TableName where 1=1";
string……
[/Quote]
很容易注入
笑道江湖情 2011-03-31
  • 打赏
  • 举报
回复
http://www.*****.aspx?pram1=12&pram2=中文&pram3=类型&pram4=哈哈
将红色部分截取下来str=url.Substring(url.IndexOf('?')+1);


string commandText = "select * from TableName where 1=1";
string[] arrStr = str.Split('&');
for (int i = 0; i < arrStr.Length; i++)
{
commandText = commandText + " and " + arrStr[i];
}
Response.Write(commandText);
andy0618 2011-03-31
  • 打赏
  • 举报
回复
Request.QueryString.Keys

得到参数数组,你就可以再分析,再继续下一步了
机器人 2011-03-31
  • 打赏
  • 举报
回复
在sql文最后加上"where 1=1"然后就挨个判断拼接。

string strSql = "select .... from where 1=1";
if (a不为空)
+= "and A=a";
if (b不为空)
+= "and B=b";
if (c不为空)
+= "and C=c";
xxoo2007 2011-03-31
  • 打赏
  • 举报
回复
JSON字串传递,后台直接parse到查询条件对象中去。
冰川711 2011-03-31
  • 打赏
  • 举报
回复
遍历所有 QueryString

foreach (string str in Request.QueryString.Keys)
{
switch (str)
{
case "pram1":

break;
.......
}
}
b327114069 2011-03-31
  • 打赏
  • 举报
回复
这样不好。。用参数化吧
子夜__ 2011-03-31
  • 打赏
  • 举报
回复
你获取的时候判断是否为空。

Request.QueryString["a"]=null?"":Request.QueryString["a"];
这样来判断。

然后过滤下 拼接就行了

Request.QueryString.Count 获取参数个数 在进一步判断

62,046

社区成员

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

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

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

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