簡體   English   中英

oracle數據庫的C#問題

[英]C# problem with oracle database

您好,我想用從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();
            }

        }
    }
}

在我返回時以及在我想向列表中添加某些內容時,它總是給我錯誤。

我們確實需要該錯誤消息以提供更好的幫助,但是我認為我將研究數據讀取器中的讀取項。

您的代碼

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]))

您應該停止使用System.Data.OracleClient類,因為它們已被棄用 請改用ODP.NET

解決您的問題時,請嘗試將oradr.GetInt32替換為oradr.GetDecimal 您應該注意的另一件事是,由於oradr不是方法,因此Filialen.Add(oradr(0))甚至都不會編譯。 您可能錯過了添加方法名稱的步驟。

如果這不起作用,請提供完整的異常信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM