Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
fatboyjim
Starting Member
1 Post |
Posted - 2007-07-27 : 09:09:44
|
Hi,I have a C# server application which clients can send arbitrary SQL statements to. These can be absolutely anything - creating tables/views, selecting from tables/views, inserts, updates, deletes, you name it.There are two return parameters from the server method which executes the SQL - a results set containing the data, and a count of the rows that were updated - (either one or the other should be populated depending on the type of command sent to it). To deal with this, what I planned on doing was (pseudocode follows..):try{ reader = OpenReaderCursor(statement)}catch{ updatedCount = ExecuteNonQueryCommand(statement)}Unfortunately this doesn't really work, as OpenReaderCursor is able to execute Non Queries (eg. UPDATE/INSERT/DELETEs etc) but doesn't give me a row count, and trying the other way round, ExecuteNonQueryCommand is happy to execute SELECT statements, but I can't then of course return a results set as I don't have access to it.My question then, if you will excuse the waffle above, is "Is there a simple way of determining if a string containing an SQL statement is a query?" - or will I have to come up with some way of dealing with this in my application code?Please don't slate the design (ideally I would have two methods on the server, one for queries which returns results and the other for nonqueries which returns an updatecount) but there's nothing I can do, this is how it must be done (the interface was defined long long ago)Thanks for your time, all ideas appreciatedJim |
|
JoeNak
Constraint Violating Yak Guru
292 Posts |
Posted - 2007-07-27 : 13:05:26
|
Yeah, you can check your statement for a SELECT. But what happens when a user types in a stored procedure? Are you going to read the text of the proc and determine if it returns a result set? |
 |
|
|
|
|
|
|