2
static public void ConnectAndQuery()
        {

            string connectionString = GetConnectionString();
            using (OracleConnection conn = new OracleConnection())
            {
                conn.ConnectionString = connectionString;
                conn.Open();
                Console.WriteLine("State: " + conn.State);
                Console.WriteLine("Connection String: " + conn.ConnectionString);

                OracleCommand command = conn.CreateCommand();
                string sql = "SELECT * FROM users";
                command.CommandText = sql;

                OracleDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    string myField = (string)reader["MYFIELD"];
                    Console.WriteLine(myField);
                }
            }

        }

接続は確立され、開いていますがIndexOutOfRangeException、DB からデータを取得しようとすると取得されます。例外がキャッチされる

string myField = (string)reader["MYFIELD"];

リーダーを理解するために OracleDataReader とコマンドに関する情報を探しましたが、取得したデータは配列またはその他の順序で保存されますか? なぜ私は を受け取っているのですか?IndexOutOfRangeExceptionまた、読者が[]括弧内に引数を必要とするのはなぜですか?

4

1 に答える 1

2

おそらく、MYFIELD というフィールドはありません。フィールド名は大文字と小文字が区別されることに注意してください...代わりにインデックスを使用してみてください。つまり、reader[0]

于 2013-03-28T13:27:38.813 に答える