这么写 有问题 string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; 这么写没问题 string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx ";问题在哪呢
注意看看有没有漏掉空格: string kiba518 = string.Format("select * from cpxx where cplbsz={0} order by quan desc", n);
string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx "; 如果kiba518 后面不接任何strng的话就没问题 你在查询前断点查看kiba518 具体是什么,到数据库的查询管理器自己看看
另外 string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc";如果表里cplbsz是字符串定义的话,应该写成 string kiba518 = "select * from cpxx where cplbsz=\'"+n+"\' order by quan desc";
string n = Request.QueryString["k"].tostring(); string kiba518 = "select * from cpxx where cplbsz='"+n+"'order by quan desc"; 这样吧 少了2个单引号
cplbsz如果这个字段是字符型的,要在值的两边加单引号.
这句话不理解cplbsz是数字
调试的时候把sql语句直接复制到数据库下执行,看下出了什么问题。
kiba518 是个SQL语句,在查询分析器中,测试一下.
用数据库自带的查询分析器试一下你的SQL语句是否有误
如果是数字 string n = Request.QueryString["k"]; 那你这句就要强制转换了 int n=convert.toint32(request.querystring["k"].tostring());
string n = Request.QueryString["k"] 这个值没有获取到吧
string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; order by quan desc" 前面加空格
n 是字符串类型 缺少一对单引号 如果 你 是数字类型就可以不变string kiba518 = "select * from cpxx where cplbsz='"+n+"' order by quan desc";
我就很奇怪,楼主你写 string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; 编译让你通过?头尾的2个双引号没问题,中间的2个双引号你不加转义字符不会报错吗? string kiba518 = "select * from cpxx where cplbsz=\"+n+\"order by quan desc"; 起码得加这2个转义字符吧
如果表里cplbsz是字符串定义的话,应该写成 string kiba518 = "select * from cpxx where cplbsz=\'"+n+"\' order by quan desc";
这么写 有问题 string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; 第一句:你的n是数字类型的,你用的是string类型; 第二句:你直接这样写的话 假设 n=8,则出来后的语句为 string kiba518 = "select * from cpxx where cplbsz=8order by quan desc" 你没发现直接连在一起了吗,没有空格。 正确写法:string n = Convert.ToInt32(Request.QueryString["k"].ToString()); string kiba518 = "select * from cpxx where cplbsz= " + n + " order by quan desc"; 第二句也就是在order前面加个空格 呵呵,其实断点一下也就看出来了,小问题
if(Request.QueryString["k"]!=null) { int n=Convert.ToInt32(Request.QueryString["k"].ToString()); //获得参数数字 string kiba518="select * from cpxx where cplbsz="+n+" order by quan desc"; }
string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; 问题所在 是string kiba518 = "select * from cpxx where cplbsz='"+n+"order by quan desc"';
首先判断是否是Request.QueryString["k"]; 获取问题…… 如果是就像23楼一样加个判断 if(Request.QueryString["k"]!=null) 在这基础上你试试 "select * from cpxx order by quan desc"; 是否可以 如果不可以 就说明order by quan desc有问题 "select * from cpxx where cplbsz="+n+"order by quan desc"; 这里错了 如果N是字符 就应该是 "select * from cpxx where cplbsz=\'"+n+"\' order by quan desc";如果是数字 就应该是 "select * from cpxx where cplbsz="+n+" order by quan desc";
string kiba518 = string.Format("select * from cpxx where cplbsz='{0}' order by quan desc",n);
谢谢支持,哈哈,不过那个第一句的n值的类型应该定义成int,在原来上改的,所以忘了,呵呵
语句写错了。。 string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc";
string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx where cplbsz=@n order by quan desc"; SqlConnection conn = new SqlConnection("..."); SqlCommand command = new SqlCommand(kiba518,conn); command.Parameters.Add("@n", SqlDbType.Int).Value = n; //And So on......... 标准写法。
string kiba518 = string.Format("select * from cpxx where cplbsz={0} order by quan desc", n);
如果kiba518 后面不接任何strng的话就没问题
你在查询前断点查看kiba518 具体是什么,到数据库的查询管理器自己看看
string n = Request.QueryString["k"]; string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc";如果表里cplbsz是字符串定义的话,应该写成 string kiba518 = "select * from cpxx where cplbsz=\'"+n+"\' order by quan desc";
这句话不理解cplbsz是数字
kiba518 是个SQL语句,在查询分析器中,测试一下.
string n = Request.QueryString["k"]; 那你这句就要强制转换了
int n=convert.toint32(request.querystring["k"].tostring());
这个值没有获取到吧
order by quan desc" 前面加空格
缺少一对单引号
如果 你 是数字类型就可以不变string kiba518 = "select * from cpxx where cplbsz='"+n+"' order by quan desc";
string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc";
编译让你通过?头尾的2个双引号没问题,中间的2个双引号你不加转义字符不会报错吗?
string kiba518 = "select * from cpxx where cplbsz=\"+n+\"order by quan desc";
起码得加这2个转义字符吧
这么写 有问题
string n = Request.QueryString["k"];
string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc"; 第一句:你的n是数字类型的,你用的是string类型;
第二句:你直接这样写的话 假设 n=8,则出来后的语句为
string kiba518 = "select * from cpxx where cplbsz=8order by quan desc"
你没发现直接连在一起了吗,没有空格。
正确写法:string n = Convert.ToInt32(Request.QueryString["k"].ToString());
string kiba518 = "select * from cpxx where cplbsz= " + n + " order by quan desc"; 第二句也就是在order前面加个空格
呵呵,其实断点一下也就看出来了,小问题
{
int n=Convert.ToInt32(Request.QueryString["k"].ToString()); //获得参数数字
string kiba518="select * from cpxx where cplbsz="+n+" order by quan desc";
}
是string kiba518 = "select * from cpxx where cplbsz='"+n+"order by quan desc"';
首先判断是否是Request.QueryString["k"];
获取问题……
如果是就像23楼一样加个判断
if(Request.QueryString["k"]!=null) 在这基础上你试试
"select * from cpxx order by quan desc";
是否可以
如果不可以 就说明order by quan desc有问题
"select * from cpxx where cplbsz="+n+"order by quan desc";
这里错了
如果N是字符 就应该是
"select * from cpxx where cplbsz=\'"+n+"\' order by quan desc";如果是数字 就应该是
"select * from cpxx where cplbsz="+n+" order by quan desc";
string kiba518 = "select * from cpxx where cplbsz="+n+"order by quan desc";
SQL语言相关的问题可以用个MessageBox.Show(...)看一下每次生成的到底是什么,一眼就能看出是什么问题了
SqlCommand command = new SqlCommand(kiba518,conn);
command.Parameters.Add("@n", SqlDbType.Int).Value = n;
//And So on.........
标准写法。