C # проблема с базой данных оракула - PullRequest
0 голосов
/ 18 мая 2011

Здравствуйте. Я хочу заполнить список данными, полученными из базы данных Oracle. Но это продолжает давать мне ошибки.

Это мой класс связи

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Windows.Forms;

namespace Kunst_In_Huis_C
{
    class Connectie
    {
        String strApplicationName = Application.ProductName;
        Logging objLoggingApplication = new Logging("d:\\project.log");

        private OracleConnection con;
        public Connectie()
        {
            con = new OracleConnection();
        }
        public void openConnectie()
        {
            if (con.State == ConnectionState.Closed)
            {
                con = new OracleConnection("Data Source=192.168.1.106/orcl;User ID=???;Password=???;Unicode=True");
                con.Open();
            }
        }
        public void sluitConnectie()
        {
            try
            {
                this.con.Close();
            }
            catch (Exception)
            {
                Console.WriteLine("fout bij het afsluiten van de connectie...");
            }
        }
        public void voerQueryUit(String sql)
        {
            try
            {
                OracleCommand cmd = new OracleCommand(sql, con);
                OracleDataReader oradr = cmd.ExecuteReader();
                while (oradr.Read())
                {
                    Console.WriteLine(oradr.GetInt32(0) + " \t " + oradr.GetString(1));
                }
                oradr.Close();
            }
            catch (OracleException ex)
            {
                Console.WriteLine("Oracle Error\n" + ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("General App Error" + ex.Message);
            }
            finally
            {
                con.Close();
            }
        }
        public void VulFilialen()
        {
            try
            {
                OracleCommand cmd = new OracleCommand("Select Fil_Adres from Filialen", con);
                OracleDataReader oradr = cmd.ExecuteReader();
                List<String> Filialen = new List<String>();

                oradr = cmd.ExecuteReader();

                while (oradr.Read())
                {
                    Filialen.Add(oradr(0));
                }
                return Filialen;
            }
            catch (Exception ex)
            {
                objLoggingApplication.WriteLine(strApplicationName, ex.Message);
            }
            finally
            {
                con.Close();
            }

        }
    }
}

Он возвращает мне ошибки по возвращении, а также когда я хочу добавить что-то в список.

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Вам следует прекратить использование классов System.Data.OracleClient, так как они устарели . Вместо этого используйте ODP.NET .

Что касается вашей проблемы, попробуйте заменить oradr.GetInt32 на oradr.GetDecimal. Еще одна вещь, которую вы должны заметить, это то, что Filialen.Add(oradr(0)) даже не скомпилируется, поскольку oradr не является методом. Возможно, вы пропустили добавление имени метода.

Если это не помогает, предоставьте полную информацию об исключении.

0 голосов
/ 18 мая 2011

Нам действительно нужно сообщение об ошибке, чтобы обеспечить более эффективную помощь, но я думаю, что я бы посмотрел элементы чтения из устройства чтения данных.

ваш код

while (oradr.Read())
   {
      Console.WriteLine(oradr.GetInt32(0) + " \t " + oradr.GetString(1));
   }

Я бы заменил

while (oradr.Read())
   { 
     Console.WriteLine(Convert.ToString(oradr[0]) + " \t "
                                     + Convert.ToString(oradr[1]));
   }

Я мог бы быть далеко отсюда, но, глядя на код, это те части, которые бросаются в глаза.

, а затем преобразовать Filialen.Add(oradr(0)) в Filialen.Add(Convert.ToString(oradr[0]))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...