.NET OleDbDataAdapter .Fill抛出nullPointerException

时间:2012-08-21 08:50:06

标签: vb.net nullpointerexception fill oledbdataadapter

在我的应用程序中,我使用了OleDbDataAdapter的&通过数据集访问数据。代码是:

        Dim id As Integer
    Try
        typeSql = "SELECT DOCHDR.dochdr_lDocId, TXNTYP.txntyp_cDocTypCat FROM TXNTYP INNER JOIN DOCHDR ON TXNTYP.txntyp_sDocTyp = DOCHDR.dochdr_sDocType WHERE ((DOCHDR.dochdr_lDocId)=395920);"
        typeAdap = New OleDb.OleDbDataAdapter(typeSql, connStr)
        typeDs = New DataSet()
        type_adap.Fill(type_ds) ' THROWS ERROR

    Catch ex As Exception
        Console.WriteLine("ERROR : " + ex.Message + " INNER " + ex.InnerException.ToString())
        Console.WriteLine("STACK = " + ex.StackTrace())
        Me.Close()
    End Try

我在此之前和之后使用其他OleDbAdapter,但它只适用于抛出异常。其他所有的adaps / ds r都以与上面相同的方式使用不同的变量填充。

MEssage : Object reference not set to an instance of an object.

如果我在DB中执行查询,它会显示1行

我无法弄清楚这里有什么问题。任何人都可以指出我哪里出错了吗?

2 个答案:

答案 0 :(得分:2)

您似乎使用了错误的DataSet

type_adap.Fill(type_ds)

应该是

typeAdap.Fill(typeDs)

因为您之前正在调用typeDs = New DataSet()行。

答案 1 :(得分:2)

    Dim id As Integer
Try
    typeSql = "SELECT DOCHDR.dochdr_lDocId, TXNTYP.txntyp_cDocTypCat FROM TXNTYP INNER JOIN DOCHDR ON TXNTYP.txntyp_sDocTyp = DOCHDR.dochdr_sDocType WHERE ((DOCHDR.dochdr_lDocId)=395920);"
    typeAdap = New OleDb.OleDbDataAdapter(typeSql, connStr)
    typeDs = New DataSet()
    typeAdap.Fill(typeDs) ' THROWS ERROR

Catch ex As Exception
    Console.WriteLine("ERROR : " + ex.Message + " INNER " + ex.InnerException.ToString())
    Console.WriteLine("STACK = " + ex.StackTrace())
    Me.Close()
End Try