问题描述
publicListGetSelectStoreAll(Stringtype,Stringname1){Listlist=newArrayList();Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;conn=GetConn();Stringsql="selectidas'ID',nameas'名字',numberas'数量',priceas'价格',typeas'类型'fromstorgewheretype=?orderby?desc";try{ps=conn.prepareStatement(sql);ps.setString(1,type);ps.setString(2,name1);rs=ps.executeQuery();while(rs.next()){stores=newstore(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getDouble(4),rs.getString(5));list.add(s);}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnlist;}运行后报由ORDERBY编号1标识的SELECT项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。请各位大虾帮忙解决一下
解决方案
解决方案二:
该回复于2011-03-28 10:58:07被版主删除
解决方案三:
type=@type
解决方案四:
还没有试过orderby使用参数的方式来完成,楼主就组装一下吧Stringsql="selectidas'ID',nameas'名字',numberas'数量',priceas'价格',typeas'类型'fromstorgewheretype=?orderby"+name1+"desc";
解决方案五:
可以参考下边这个文章