Sub Page_Load()
Teamlist.Datasource = getteams
teamlist.databind()
End Sub
Function GetTeams() As System.Data.IDataReader
Dim connectionString As String = _
ConfigurationSettings.AppSettings("connectionstring")
Dim dbConnection = ConfigurationSettings.AppSettings("connectionstring")
Dim queryString As String = "SELECT [Teams].[TeamID], [Teams].[TeamName], [Teams].[Notes] FROM [Teams]"
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
dbConnection.Open
Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Return dataReader
End Function
Now I get this:
Exception Details: System.NullReferenceException: Object variable or With block variable not set.
Source Error:
Line 21: dbCommand.Connection = dbConnection
Line 22:
Line 23: dbConnection.Open
Line 24: Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Line 25:
Here is the contents of my web.config
<?xml version="1.0" encoding="UTF-8" ?
<configuration
<!--
The <appSettings> section is used to configure application-specific configuration
settings. These can be fetched from within apps by calling the
"ConfigurationSettings.AppSettings(key)" method:
<appSettings>
<add key="connectionstring"
value="Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4;
Data Source=C:\begaspnet11\wroxunited\database\wroxunited.mdb"/>
</appSettings
--
<system.web
<!--
The <sessionState" section is used to configure session state for the application.
It supports four modes: "Off", "InProc", "StateServer", and "SqlServer". The
later two modes enable session state to be stored off the web server machine -
allowing failure redundancy and web farm session state scenarios.
<sessionState mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;trusted_connection=true"
cookieless="false"
timeout="20" /
--
<!--
The <customErrors> section enables configuration of what to do if/when an
unhandled error occurs during the execution of a request. Specifically, it
enables developers to configure html error pages to be displayed in place of
a error stack trace:
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm"/>
<error statusCode="404" redirect="FileNotFound.htm"/>
<customErrors
--
<!--
The <authentication> section enables configuration of the security authentication
mode used by ASP.NET to identify an incoming user. It supports a "mode"
attribute with four valid values: "Windows", "Forms", "Passport" and "None":
The <forms> section is a sub-section of the <authentication> section,
and supports configuring the authentication values used when Forms
authentication is enabled above:
<authentication mode="Windows"
<forms name=".ASPXAUTH"
loginUrl="login.aspx"
protection="Validation"
timeout="999999" /
</authentication
--
<!--
The <authorization> section enables developers/administrators to configure
whether a user or role has access to a particular page or resource. This is
accomplished by adding "<allow>" and "<deny>" sub-tags beneath the <authorization>
section - specifically detailing the users/roles allowed or denied access.
Note: The "?" character indicates "anonymous" users (ie: non authenticated users).
The "*" character indicates "all" users.
<authorization>
<allow users="joeuser" />
<allow roles="Admins" />
<deny users="*" />
</authorization
--
</system.web
</configuration>Hi,
Which line throw an error?
One problem I can see in your code is connection scope. DataReader can not be used if associated connection is closed. In your case connection (attached to command object) exists in scope of GetTeams scope and you are using DataReader out of this scope. It is wrong.
Line 23
dbconnection.open
Change this:
Dim dbConnection = ConfigurationSettings.AppSettings("connectionstring")
to:
Dim dbConnection as New SqlConnection()
dbConnection.ConnectionString = ConfigurationSettings.AppSettings("connectionstring")
dbConnection should be declared in the same scope where you are using associated datareader (see my previous reply)
1. Appreciate you working with me.
2. I'm using a Access mdb for this. How do that change this:
Dim dbConnection as New SqlConnection()
dbConnection.ConnectionString = ConfigurationSettings.AppSettings("connectionstring")
Thanks!
Rich
Sorry, I did not realize it is OleDb. Use this instead:
Dim dbConnection as New OleDbConnection()
dbConnection.ConnectionString = ConfigurationSettings.AppSettings("connectionstring")
Thanks but I got the same error.
The ConnectionString property has not been initialized.
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: The ConnectionString property has not been initialized.
Source Error:
Line 25: dbCommand.Connection = dbConnection
Line 26:
Line 27: dbConnection.Open
Line 28: Dim dataReader As System.Data.IDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Line 29:
Source File: C:\begasnet11\wroxunited\teams.aspx Line: 27
Stack Trace:
[InvalidOperationException: The ConnectionString property has not been initialized.]
System.Data.OleDb.OleDbConnection.Open() +203
ASP.teams_aspx.GetTeams() in C:\begasnet11\wroxunited\teams.aspx:27
ASP.teams_aspx.Page_Load() in C:\begasnet11\wroxunited\teams.aspx:9
System.Web.Util.ArglessEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +10
System.Web.UI.Control.OnLoad(EventArgs e) +55
System.Web.UI.Control.LoadRecursive() +27
System.Web.UI.Page.ProcessRequestMain() +731
------------------------
Dim dbConnection as New OleDbConnection(ConfigurationSettings.AppSettings("connectionstring"))Constructors are faster than instantiating and then initializing (admittedly you won't be noticing the speed gain, but still, it's good to have performance in mind at all times).
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand("SELECT [Teams].[TeamID], [Teams].[TeamName], [Teams].[Notes] FROM [Teams]", dbConnection)
Still nothing. I've tried this on 2 diffrent computers. Grasping at straws.
Same error.
Thanks!
Rich
Was this statement (dbConnection.ConnectionString = ConfigurationSettings.AppSettings("connectionstring") ) executed?
If it was, check dbConnection.ConnectionString value in debugger. May be Config file entry was not read correctly.
I set debug to true and this is what I got in addition to the same error
[InvalidOperationException: The ConnectionString property has not been initialized.]
System.Data.OleDb.OleDbConnection.Open() +203
ASP.teams_aspx.GetTeams() in C:\begasnet11\wroxunited\teams.aspx:26
ASP.teams_aspx.Page_Load() in C:\begasnet11\wroxunited\teams.aspx:10
System.Web.Util.ArglessEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +10
System.Web.UI.Control.OnLoad(EventArgs e) +55
System.Web.UI.Control.LoadRecursive() +27
System.Web.UI.Page.ProcessRequestMain() +731
Man I feel so dumb. OK here it is. The <appsettings> in the webconfig file was commented out. I removed the comment tags and bang.
Thanks everyone!!
Does it matter if this is in a folder or a virtual directory? Does the web config file need a virtual directory to work in like a global asa?
0 comments:
Post a Comment