描述:前台以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=哈哈";
例如: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=哈哈";
解决方案 »
- ASP.NET中水晶报表能否实现多个报表放入一个PDF文档中,或者点击一个按钮,连续导出多个PDF文档。
- 碰到一个COOKIE问题,死也不明白
- 在asp.net 2.0里面,是不是不能使用datetime这个数据类型作为传值的参数呢?
- pageLoad 里面 js不执行
- 谁有好用的可以定义外关样式的DatePicker类控件?
- ASP.NET中怎么找不到XmlDocument、XmlElement等类?
- 求助:无效的应用程序路径 IIS虚拟目录
- 页面局部刷新?
- web自定义控件在web用户控件使用的问题?
- 有那位用过FreeTextBox.dll?我有一个小问题
- 类库中刚添加的类在ui能找到,但是生成不成功
- 小弟想把VSS从电脑A迁移到电脑B 历史记录不丢失 请问该怎么操作?
这样来判断。然后过滤下 拼接就行了Request.QueryString.Count 获取参数个数 在进一步判断
{
switch (str)
{
case "pram1":
break;
.......
}
}
if (a不为空)
+= "and A=a";
if (b不为空)
+= "and B=b";
if (c不为空)
+= "and C=c";
将红色部分截取下来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);
我用的Oracle数据库,
select * from T_name where 1==1;就报错了继续求解
获取url参数就是使用 Request.QueryString[name]来获取。当它返回null值则表示没有这个参数。参数一律都是string,你需要自己转换为数据真正的强类型。对于string类型的值,当拼接到sql字符串时,需要处理参数值中的单引号(而不是简单地拼接到字符串)。
谢谢,这个方法不错。
我用的ajax,感觉注入不是那么“明显”!!!
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();
}