.net中参数话SQL查询问题,急,高手进来
SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate like '%'+'@StartDate'+'%' or @StartDate=' ' )and (FlightNum = @FlightNum)这个SQL语句中,当StartDate为空是可以全部查询出来,但当StartDate是一个值的时候查询出来的结果为空,请高手帮助,谢谢了!!! --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE StartDate like '%'+@StartDate+'%' and (FlightNum = @FlightNum)
OK! --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate like '%@StartDate%' or @StartDate=' ' )and (FlightNum = @FlightNum) --------------------编程问答-------------------- StartDate这个是日期型吧,如果是,你最好用convert转成字符型再like --------------------编程问答-------------------- 你的@StartDate是一个参数,你要是加上单引号,那就是一段字符串了。
而且那个or @StartDate=' '也不需要加,因为
select * FROM Tickets where StartDate like '%%' ==select * FROM Tickets where StartDate ='' --------------------编程问答-------------------- 像这类的问题 跟踪下实际执行的SQL(SQL事件探查器) 立马就能知道错误在哪里咯。 --------------------编程问答-------------------- StartDate like '%'+ @StartDate --------------------编程问答-------------------- 你要查询什么,,StartDate是一个值的时候没有对应的,,结果当然就空了,, --------------------编程问答--------------------
+1 应该是这个错误把 --------------------编程问答-------------------- 对哦,不知道他的StartDate是不是日期类型额。 --------------------编程问答--------------------
SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE (StartDate like '%@StartDate%')and (FlightNum = @FlightNum)
--------------------编程问答-------------------- 这种情况用这个参数查询不好搞定。还是拼字符串吧,拼之前检查一下有没有危险的SQL语句,防止SQL注入 --------------------编程问答--------------------
是日期类型的 --------------------编程问答-------------------- 遇到这种问题调试下,然后 COPY 到数据库中执行下看看不就好了么。。。 --------------------编程问答--------------------
这样不行吧,我的StartDate是一个参数,是一个控件的值 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- SELECT Class, ClassNum, ClassPrice, FlightNum, StartDate, TicketID FROM Tickets WHERE StartDate like '%'+@StartDate+'%' and (FlightNum = @FlightNum)
--------------------编程问答-------------------- 字段名不能参数化。 --------------------编程问答-------------------- 日期型转成字符串型应该就行了
补充:.NET技术 , ASP.NET