webForumDet fria alternativet

Object reference not set to an instance of an object

.NET

1 svar · 210 visningar · startad av Drogen

Medlem sedan maj 200315 inlägg
Frågan#1

Inför en uppdatering av en större sajt så tänkte jag lära mig lite ASP.NET men det går inget vidare. Jag använder min dator (#1) med WinXP Pro(admin), IIS och Framework 1.1 SDK. Jag vill hämta in lite data i ett DataSet och presentera det i en DataList men får: Object reference not set to an instance of an object. Använder jag en annan metod än att gå via ett DataSet så fungerar det.

Enligt Microsoft så ska jag registrera adodb.dll i GAC (lite grekiska för mig). Men det visade sig att adodb.dll inte existerar på min maskin. Efter tips så uppdaterade jag MDAC till 2.8 och då fungerar det och adodb.dll finns!

När jag sedan skulle testa samma kod på en annan dator (#2) med Win2000 Pro (inga adminrättigheter) Framework 1.1 och WebMatrix server så fick jag samma fel. Glad i hågen så gjorde jag samma åtgärd och uppdaterade MDAC men det hjälpte inte, felet kvarstår och adodb.dll går inte att hitta. Laddar jag upp filen till mitt webbhotell så får jag samma fel.

Fungerar:

Sub Page_Load(Sender As Object, E As EventArgs)

'radbrutna koder för att inte sabba layouten på inlägget
        Dim dbConnection as new OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; 
Data Source=" & Server.MapPath("database\PlayersNGames.mdb"))
        Dim queryString As String = "SELECT [TblPlayers].* FROM [TblPlayers] ORDER BY FldName"
        Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
        dbCommand.CommandText = queryString
        dbCommand.Connection = dbConnection

        dbConnection.Open()

    Datalist1.DataSource = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)
    Datalist1.DataBind()

End Sub

Fungerar ej:

' Insert page code here
'
Sub Page_Load(sender As Object, e As EventArgs)
       Dim connectionString As String
 = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=
" & Server.MapPath("database\PlayersNGames.mdb")
        Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(connectionString)

        Dim queryString As String = "SELECT [TblGames].* FROM [TblGames]"
        Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
        dbCommand.CommandText = queryString
        dbCommand.Connection = dbConnection

        Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter
        dataAdapter.SelectCommand = dbCommand
        Dim dataSet As System.Data.DataSet = New System.Data.DataSet
        dataAdapter.Fill(dataSet)

    Repeater1.DataSource = dataSet.Tables("TblGames").DefaultView '###Felmeddelandet på denna rad###
    Repeater1.DataBind()

End Sub

När jag sedan åter startar dator #1 efter några timmar så är felet tillbaka och adodb.dll går inte att hitta längre! Hur går jag vidare?

Medlem sedan dec. 20003 563 inlägg
#2

I insertsidan skulle du kunna testa med detta.
Samma sak iofs men...

...
dataAdapter.Fill(dataSet, "TblGames")
  Repeater1.DataSource = dataSet.defaultView
...
265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)