I’ve got a .Net web system with a VB.Net front end talking to a SQL Server 2005 back end over ADO.Net. Essentially, what I want to do is this:
Dim command As SqlCommand = New SqlCommand('', connection) command.CommandText = 'SELECT * FROM someTable ORDER BY orderValue @SortOrder' Dim sortParam As SqlParameter = New SqlParameter('@SortOrder', SqlDbType.varChar, 3) sortParam.Value = 'ASC' command.Parameters.Add(sortParam) command.Prepare() reader = command.ExecuteReader()
Where the sort order would be passed in via a query string or some such. This code throws ‘Incorrect syntax near ‘@SortOrder’. Statement(s) could not be prepared.’
Is this even possible, or do I have some really dumb syntax error I’m not seeing?
(And, yes, the client is only running .net 2.0, so LINQ-based solutions won’t work, sadly.
Thanks, all!
Update / Response:
Well, that’s what I thought. Thanks for the sanity check, everybody. (For some context, the command string is currently being built dynamically, but we’re moving the system in a more prepared statement direction, and this was one of the edge cases I didn’t know was possible.
Thanks again!
No, that won’t work.
There are two possibilities that I can think of right off the top of my head to do what you’re trying to do:
With another 6 years or so of experience (plus SQL Server Versions), I have a way of accomplishing this.
This also allows for Sorting up,down, or even excluding that particular column from the given sort order.