DataSource Controls :: SqlDataReader And The Invalid Attempt To Call FieldCount Error?
Mar 30, 2010
I have several methods where I return a SqlDataReader to populate Gridviews, Listview, etc. I get random "Timeout expired" errors regarding connection pooling, so I decided to add using{} to my methods. The lack of using is a carry over from my more beginner days.Below I included the before and after code. The after code always gives me the "Invalid attempt to call FieldCount when reader is closed" error. I have tried various combination of using{}, but ALL result in the same error.What am I doing wrong? Also, from the code below what is the best way to structure this code to ensure no connection leakage?Before:
Environment is : vwd2008, asp.net 3.5, linq to sql object model, formview, stored procedure used for query.On going problem... I have a simplified page with a webform content area from a master page. The content area contains a FormView connected to an object data source thru the design view tag. The O/R designer has the Lease Table and the stored procedure in the method area.
The stored procedure selects all records from a single table. I an using the DatabaseDataContext and selecting stored procedure name which has "return SingleResult".. There is no code written; the design view was used to create everything. The stored procedure executes in VWD 2008 express tab and shows desired records. I would like to use the O/R and Linq to SQL, and objectdatasource BUT.
I've read up on this error from other posts and on other sites, but haven't found a solid resolution to the issue yet. My setup is as follows:
I have a RepositoryBase class that fields certain db calls that all repositories need to perform. In one such call, "GetSecurityGroup", it works most of the time, but will seemingly at random throw an exception with the error "Invalid attempt to call Read when reader is closed." All other Repository classes inherit from this one, and they all use the same DataContext object, which I understand isn't thread safe. Since there could be multiple calls to the DataContext object on the same page, perhaps one is using the DataContext when the next tries to do so. I'm not sure. What can I do to ensure this doesn't happen?
I am creating a C# web application where I am attempting to extract data from my SQL Server and return the data in a single data stream into the properties of my object instance. Here is the code from my Presentation Layer where I am calling the Load method of my BLL:
[Code]....
Here is the code for the method in my BLL:
[Code]....
Here is the fillObject method from the BLL as well:
[Code]....
Here is the code from my DAL:
[Code]....
In the end I get an "Object reference not set to an instance of an object" error on the next line of code in my Presentation Layer. However, when I step through the code I notice the myDataReader in the BLL does not get populated and the step through actually errors out during the fillObject method at the line "myObject.string1 =" with the error stated in the title. I am not sure why the myDataReader in the BLL is closed and why I this does not work. At my work we have this same code logic only in VB.Net and it works perfectly. have any insight as to why this does not work in C# and how can I correct this?
I have a function which allows me to quickly load SQL results into an SQLDataReader.
This is a very effective way for me to do this as it can be used for inserts, updates and selects very easily throughout my code.
However, I have noticed some potential memory issues with my site while using this (I keep having to do iisresets when working locally because all the pools are used up) so I am trying to use "Using" rather than "Dim" in an effort to ensure that the connection is always disposed.
I call the function in the following way:
Dim RS As SqlDataReader = SQL.Exec("sp_MyStoredProcedure " & ID) If RS.Read Then Return RS("Column_Name") End If RS.Close()
[Code].....
I now get the error "Invalid attempt to call Read when reader is closed" when calling the function on the line "If RS.Read Then".
When using the DataTable.Load(SQLDataReader) method, if the datatable is a property of a class, the set method is not called to populate the object. For example...
MySQLDataReader = command.ExecuteReader(); if (MySQLDataReader.HasRows)
myObjDataTable.Load(MySQLDataReader); -- The result of this will be 0 rows returned. The "Set" method of the object is never called.
Server Error in '/AviaBellaVidaChecklist' Application.
Invalid attempt to read when no data is present. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.
I am getting the following error when i am trying to assign values to controls on form via datareader, i know i got one row. but this particular field has no data in it.
I do have lot of other forms where i use the same style
getting this error: invalid attempt to read when no data is present
on this line: If gDatareader("CutoffDate") Is DBNull.Value Then
I want to creat dynamic <asp:table ID=""...> and I want to have a totalAmount column by reading the first cell from my datareader and put it into total, this column must show the cumulative numbers....
Recently, I added a button, a textbox and a jquery code. On click of button the textbox value was been captured in the dropdown. All my code is working fine. But, when I fill the other data and submit the form, It gives me the below error.
I want to get the total data of my table and store into one variableThis is my code...but it gives me error like 'Invalid attempt to read when no data is present.'
Invalid attempt to read when no data is present.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.Source Error:
so i have a content page that load some content into repeater one of the repeater items is UserControl, when the page is load for the first time everything is perfect, but if i try to do postback and reload the repeater i get this error: Code:
Exception Details: MySql.Data.MySqlClient.MySqlException: Invalid attempt to Read when reader is closed.
this error is raised in the repeater databind event.
I am trying to run a stored proc from this function. When I run it thorugh the debugger I can see that myReader.HasRows = true and myReader.FieldCount =14.
But the control does not go in the loop while (myReader.Read()) where I am trying to read Version field returned by the stored proc.
I'm trying to convert some code from VB to C# on a site i'm working on and can't seem to get the arraylist to function properly.
Here is what we currently have in the codebehind:
[Code]....
Which we then call from the page using:
[Code]....
I want to convert this to C# as the rest of the code on the new site is in C# and I'm having problems with the ArrayList. I've got the other parts of the code all converted fine it's just the GetContent Function that isn't working right. Here's what I have:
[Code]....
I got an error on the "objSDR.Item" part of the code saying "SqlDataReader doesn't have definition for Item" and so if I changed this to the code above. Only problem now is I can't call this from the page using the code below as there is no "Item" in the GetContent Function any more