0

したがって、C#では、行があることを返すODBCDataReaderがありますが、データにアクセスしようとすると、オブジェクトエラーの参照に設定されていないオブジェクトが返されます。データベースでSQLを直接テストしたところ、nullのない行が返されました

OdbcDataReader results;
try
{
// Initialize & open odbc connection
using (OdbcConnection conn = new OdbcConnection(connectionString.ToString()))
{
    conn.Open();

    // Initialiaze odbc command object
    using (OdbcCommand comm = new OdbcCommand(query.ToString(), conn))
    {
        results = comm.ExecuteReader();

    } 
} 
} 
catch
{
//detailed error messaging here (which does not get hit)
}

temp = results;

if (temp.HasRows == false)
{
//error messaging here does not get hit.
}
while (temp.Read())
{
    try
    {
        //I attempted to access the data by creating an object array:
        object [] objarray = new object[temp.FieldCount)
        temp.GetValues(objarray); //this causes error
    }
    catch{ // error is caught here "object not set to a reference of an object" }

    for (i = 0; i < temp.FieldCount; i++)
 {
    try
    {
                    //I also attempted other ways to access the data including:
        temp[i].ToString(); // this causes error
        temp.GetInt32(i).ToString(); // this causes error
                    temp.GetName(i); //this causes error
    }
    catch
    {
        // error is caught here "object not set to a reference of an object"
    }
 }
}
4

2 に答える 2

2

using ブロックの外で使用しています。[results] を使用する部分を using ブロック内 (ExecuteReader() 呼び出しの直後) に移動すると、はるかに適切な場所に移動できます。

于 2013-10-21T20:19:04.460 に答える