2

I have created a method that can be called using a stored procedure name and list of SqlParameters, lets call it GetData(). GetData() then manages talking to the SQL Server and getting the data. What I then need to do is hand the data back to the caller for them to read, they have no need to manipulate it. What I am trying to figure out is if it is best to hand the caller back a DataTable or SqlDataReader?

Right now, I am thinking that going with a DataTable is the best route. My decision points on this are:

  • The sets of data I am getting back are small, under 100 rows and 20 columns, so memory shouldn't be an issue.
  • From what I understand, a DataTable grabs all of the data and plugs it into the DataTable, then disconnects itself so GetData() would manage it's own connection.
  • With a SqlDataReader, I would have to manage the connection in the calling function after I am done with the data. I would not be able to close it after I have made the call in GetData() since I am only reading one row at a time from the database.

Does this seem like the best route to go for what I need?

2 Answers 2

2

Yes, your idea is good.

Pass a datatable back, not the sqldatareader. Connections should only be maintained for the minimum amount of time necessary to transfer data to/from the database server.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for your prompt response.
0

Use a DataTable. The data bound controls are built to use that abstraction.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.