0

次のようなデータベースと oledb 接続にアクセスしています。

OleDbConnection Connection;
Connection = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" +
               Server.MapPath("~/db.mdb"));
OleDbCommand Command;
Command = new OleDbCommand("SELECT FTPTARIHARALIGI FROM Table1 WHERE ID = 1", Connection);
Connection.Open();
OleDbDataReader reader = Command.ExecuteReader();

Select コマンドは int 値のみを返すため、この値に変数にアクセスする必要があります。

私は試した:

int test = reader.GetInt32(0);

Return: 行/列にデータがありません。

しかし、データは存在し、選択コマンドは機能します。

これどうやってするの?

4

3 に答える 3

1

OleDbDataReader最初の列の前から始めます。メソッドを呼び出さないとOleDbDataReader.Read、最初の行に到達することはありません。

OleDbDataReader.Readメソッドから;

OleDbDataReader の既定の位置は、最初のレコードの前です。したがって、データへのアクセスを開始するには Read を呼び出す必要があります

usingステートメントを使用してOleDbConnection、 、OleDbCommandおよびを破棄しますOleDbDataReader

using(OleDbConnection Connection = new OleDbConnection(conString))
using(OleDbCommand Command = Connection.CreateCommand())
{
    Command.CommandText = "SELECT FTPTARIHARALIGI FROM Table1 WHERE ID = 1";
    using(OleDbDataReader reader = Command.ExecuteReader())
    {
        if(reader.Read())
        {
            int test = reader.GetInt32(0);
        }  
    }
}

データのセルを 1 つだけ取得したい場合ExecuteScalarは、より良いオプションです。最初の行の最初の列を として返しますobject

using(OleDbConnection Connection = new OleDbConnection(conString))
using(OleDbCommand Command = Connection.CreateCommand())
{
    Command.CommandText = "SELECT FTPTARIHARALIGI FROM Table1 WHERE ID = 1";
    Connection.Open();
    int test = (int)Command.ExecuteScalar();
}
于 2014-11-28T08:21:20.477 に答える