Laden...

Forenbeiträge von Bratwurstexe Ingesamt 24 Beiträge

03.11.2022 - 09:58 Uhr

Vielen Dank schonmal.

Die Artikel sehen sehr interessant aus und werde ich auch sorgfältig durchlesen.

Ich habe das jetzt vorerst mit einer "vergleichenden" SQL View gelöst der doppelte Werte in 2 Tabellen prüft bevor das Update gemacht wird.

03.11.2022 - 09:12 Uhr

Hallo zusammen,

der Thread ist zwar schon älter, jedoch habe ich das selbe Problem.
Wie seid ihr jetzt zur Lösung gekommen? bzw. Wie kann ich verhindern, dass doppelte Einträge übertragen werden?
Wie kann ich den Loop fortsetzen damit er die doppelten Werte nicht versucht einzutragen?

Benutze Datenbank: SQL Server Management Studio Version 15.0.18420.0

Fehlermeldung:
System.Data.SqlClient.SqlException: "Verletzung der PRIMARY KEY-Einschränkung "PK_David_Test". Ein doppelter Schlüssel kann in das dbo.David_Test-Objekt nicht eingefügt werden. Der doppelte Schlüsselwert ist (410758, 70396028).
Die Anweisung wurde beendet."

Mein Code


 private void UpdateDaten()
        {
            string connection = @"Data Source = ***********SQLSERVER; Persist Security Info = True; User ID = ******; Password = *********";
       
                using (SqlConnection conn = new SqlConnection(connection))
                {
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.Connection = conn;
                        conn.Open();

                        for (int i = 0; i < dataGridView1.Rows.Count; i++)
                        {
                            var Filiale = dataGridView1.Rows[i].Cells[2].Value.ToString();
                            var Auftrag = dataGridView1.Rows[i].Cells[4].Value.ToString();

                            string _Query = @"insert into Kennzahlen.dbo.David_Test(Filiale,Auftragsnummer)values(" + Filiale + "," + Auftrag + ")";

                            cmd.CommandText = _Query;
                            cmd.ExecuteNonQuery();
                      
                        }
                    }
                }

            }

13.09.2022 - 15:45 Uhr

Das Problem konnte ich lösen.

Das Problem war einfach dass ich eine falsche tnsnames.ora auf meinen Computer hatte. Und er sich somit mit einen alten Server verbinden hat. Daher auch die abweichenden Daten.

Vielen Dank 👍

13.09.2022 - 10:34 Uhr

Ich glaube ich habe mein Problem gefunden...
Allerdings kann ich es mir weder technisch noch logisch erklären. Ich denke es hat was mit meinem Computer zu tun?
Wie kann ich das ausschließen bzw. prüfen?

Wenn ich die Abfrage auf dem Server wo sich auch Oracle befindet in Visual Studio schreibe (im DataSet -> TableAdapter) und hier dann eine Datenvorschau ausführe,
bekomme ich die richtigen Werte/Daten angezeigt und alles funktioniert so wie ich es von meinem Code erwarten würde.

11.09.2022 - 22:24 Uhr

Ich habe noch keinen Code. Ich habe nur den Oracle-Server verbunden und mit folgenden SELECT ein DataSet bzw. TableAdapter "gefüllt".


select 

to_char(lrg.lroug_date,'DD.MM.YYYY')AS Datum,
to_char (decode (sum(lcsl.lcsl_qtyhost), 0, 0,(sum(lcsl.lcsl_qtymissed)*100)/sum(lcsl.lcsl_qtyhost)),'0D00')As Anteil_in_Prozent

from lcos_ship_line lcsl,lroute lrou,lroute_group lrg              
               
where lcsl.lrou_ref = lrou.lrou_ref
and lrou.lrou_groupident = lrg.lroug_groupident
and lrg.lroug_date between trunc(sysdate-7) and trunc(sysdate)
      
group by lrg.lroug_date, lrpca_ref
order by 1

APPCONFIG Code


 <connectionStrings>
        <add name="sakura.Properties.Settings.ConnectionString" connectionString="Data Source=XXXX;Persist Security Info=True;Integrated Security=False;User ID=XXXX;Password=XXXXX;Unicode=True"
            providerName="System.Data.OracleClient" />
    </connectionStrings>

11.09.2022 - 21:51 Uhr

Benutzte Datenbank: PL SQL Oracle Developer 14
Net Framework: 4.8

Hallo zusammen,

ich habe zur Zeit mit folgenden Problem zu kämpfen:

Ich habe eine Abfrage in Visual Studio an meine Oracle Datenbank mit einem TableAdapter im Dataset verbunden und ich bekomme nicht die gleichen Werte bei einer Datenvorschau (siehe Bild) Woran könnte das liegen? Ich kann mir das leider nicht erklären.

Was habe ich gemacht:

  1. Dataset erstellt
  2. TableAdapter mit einer Abfrage an meine Oracle-DB erstellt
  3. im TableAdapter die "Datenvorschau" gestartet
  4. Mit derselben Abfrage das Ergebnis gegen geprüft und festgestellt, dass in Oracle eine Zeile mehr angezeigt wird (bei ++identischen SELECT ++Befehl)
30.08.2022 - 10:53 Uhr

Da habe ich auch bereits geschaut.
Der gibt alle möglichen Informationen nur die DHCP Informationen kann ich hier nicht rauslesen.

oder ist APIPA mit DHCP gemeint?
Denn APIPA ist doch nur ein Failover-System für DHCP wenn ich mich nicht irre oder?

Ich glaube ich habe es gefunden mit dem Code funktioniert es


  NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();

            foreach (NetworkInterface adapter in nics)
            {
                if (adapter.Supports(NetworkInterfaceComponent.IPv4) == false)
                {
                    continue;
                }
                Console.WriteLine(adapter.Description);
                IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                IPv4InterfaceProperties p = adapterProperties.GetIPv4Properties();

                if (p == null)
                {
                    Console.WriteLine("No IPv4 information is available for this interface.");
                    Console.WriteLine();
                    continue;
                }
          
                Console.WriteLine("{0}",p.IsDhcpEnabled);
            }

Jetzt wäre meine Frage wie ich mir nur den ersten Aktiven anzeigen lassen kann?

30.08.2022 - 10:39 Uhr

Hallo zusammen,

ist es möglich die Informationen aus (cmd Befehl: ipconfig -all) den Status der DHCP Einstellung abzufragen? also Enabled oder Disabled?

Ich bekomme bisher nur hin, dass mir die DHCP IP angezeigt wird jedoch nicht der aktuelle Status.


NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
                if (addresses.Count > 0)
                {
                    Console.WriteLine(adapter.Description);
                    foreach (IPAddress address in addresses)
                    {
                        Console.WriteLine("{0}",address.ToString());
                    }
                    Console.ReadKey();
                }
            }

14.06.2022 - 19:46 Uhr

Danke für deine Antwort!

Damit konnte ich tatsächlich mein Problem lösen.
Besten Dank. War ja doch nicht so kompliziert wie ich dachte 🙂

Ich habe es jetzt wie folgt gelöst:


static DateTime GetDateFromWeekNumberAndDayOfWeek(int weekNumber, int dayOfWeek)
        {
            DateTime jan1 = new DateTime(2022, 1, 1);
            int daysOffset = DayOfWeek.Tuesday - jan1.DayOfWeek;
            DateTime firstMonday = jan1.AddDays(daysOffset);
            var cal = CultureInfo.CurrentCulture.Calendar;
            int firstWeek = cal.GetWeekOfYear(jan1, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

            var weekNum = weekNumber;
            if (firstWeek <= 1)
            {
                weekNum -= 1;
            }
            var result = firstMonday.AddDays(weekNum * 7 + dayOfWeek - 1);
            return result;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var eingabeKW = Convert.ToInt32(textBox1.Text);
            var ausgabeVonMittwoch = Convert.ToString(GetDateFromWeekNumberAndDayOfWeek(eingabeKW, 2));
            var ausgabeDienstag = Convert.ToString(GetDateFromWeekNumberAndDayOfWeek(eingabeKW + 1, 1));

            textBox2.Text = ausgabeVonMittwoch;
            textBox3.Text = ausgabeDienstag;
        }

Eine Frage stellt sich mir jedoch noch:
Wie bekomme ich bei der Ausgabe nur das Datum ohne Uhrzeit. Im moment soeht die Ausgabe so aus: 01.01.2022 00:00:00 würde gerne die Nullen nicht angezeigt bekommen 🙂

14.06.2022 - 17:59 Uhr

Hallo zusammen ich stehe vor folgenden Problem:

Ich habe 1 Eingabefeld und ich möchte folgende Werte anhand der Eingabe in Feld 2 und 3 realisieren.

Ziel KW: Beispielsweise KW28
daraus möchte ich gerne wissen welches Datum der Vorwoche(KW27) der Mittwoch hat und dieses in Feld 2 ausgeben.
Und in Feld 3 möchte ich das Datum von der Ziel KW vom Dienstag ausgeben.

Beispiel anhand der Kalenderwoche 28
Ziel KW:28
Datum von: 06.07.2022 (Mittwoch der Ziel-VORWOCHE)
Datum bis: 12.07.2022 (Dienstag der Ziel-Woche)

Ziel KW [] (Feld1 textBox1)
Datum von [
] (Feld2 textBox2)
Datum bis [_____________] (Feld3 textBox3)

       [BUTTON BERECHNEN]

Die aktuelle Kalenderwoche habe ich wie folgt ausgerechnet. Das funktioniert soweit auch und er gibt mir die aktuelle Kalenderwoche aus.
Leider finde ich nur nicht heraus wie ich die oben genannte Berechnung herausbekomme.


        private int KalenderWocheBerechnen()
        {
            CultureInfo cultureInfo = new CultureInfo("de-DE");
            Calendar calender = cultureInfo.Calendar;
            int currentWeek = calender.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
            return currentWeek -1; 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var kw = Convert.ToString(KalenderWocheBerechnen());
            label4.Text = "Aktuelle KW: " + kw;
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

06.04.2022 - 15:07 Uhr

Hallo dannnoe,

Ohje.... das muss ich übersehen haben. 🙂
Hast mir sehr geholfen! Vielen Dank. Das passiert mir nicht nochmal.

06.04.2022 - 14:23 Uhr

Hallo zusammen,

ich habe eine Funktion geschrieben, welche mehrere Einträge in meinem DataGridView vergleicht und dementsprechend in einem anderen Feld das Ergebnis ausgibt.

Die Funktion vergleicht Das heutige Datum/Zeit mit dem Versanddatum/Versandzeit.

Nur aus mir nicht ersichtlichen gründen, zeigt er die letzte Zeile nicht an und sie bleibt Frei obwohl bei dieser Zeile die selbe Funktion greifen müsste.

Könnt ihr mir hier einmal auf die Sprünge helfen? 🙂


 public void Versandzeit()
        {
            DateTime _Versandzeit;
            DateTime _Systemzeit;
            DateTime _Versanddatum;
            DateTime _Heute;
      
            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
              
                _Heute = Convert.ToDateTime(dataGridView1.Rows[i].Cells[6].Value); 
                _Systemzeit = Convert.ToDateTime(dataGridView1.Rows[i].Cells[5].Value);
                _Versanddatum = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value); 
                _Versandzeit = Convert.ToDateTime(dataGridView1.Rows[i].Cells[3].Value);

                if (_Heute == _Versanddatum && _Versandzeit > _Systemzeit) 
                {
                    dataGridView1.Rows[i].Cells[4].Value = "Versandzeit OK";
                }
                else if (_Versandzeit == _Systemzeit && _Versanddatum == _Heute) 
                {
                    dataGridView1.Rows[i].Cells[4].Value = "Versandzeit abgelaufen!";
                }
                else if (_Systemzeit > _Versandzeit && _Versanddatum < _Heute)
                {
                    dataGridView1.Rows[i].Cells[4].Value = "Versandzeit prüfen!";
                }
                else if (_Heute < _Versanddatum || _Heute.AddDays(1) == _Versanddatum)
                {
                    dataGridView1.Rows[i].Cells[4].Value = "Versandzeit OK";
                }

            }
        }




04.01.2022 - 15:20 Uhr

Vielen Dank für eure Antworten. Ihr konntet mir sehr helfen.

04.01.2022 - 11:22 Uhr

Vielen Dank.

Ich habe es jetzt wie folgt gelöst.
Ich denke aber es gibt hier auch eine elegantere Lösung oder?


foreach (DataGridViewRow row in dataGridView2.Rows)
                if (row.Cells[2].Value.ToString() == "0")
                row.Cells["KENNZEICHNUNG"].Style.BackColor = Color.Red;
             
            foreach(DataGridViewRow row in dataGridView2.Rows)
                if (row.Cells[2].Value.ToString() == "0")
                    row.Cells["STATUS"].Style.BackColor = Color.Red;

04.01.2022 - 11:08 Uhr

Hallo zusammen und ein Frohes und gesundes neues Jahr.

Ich möchte gerne wenn sich der Wert einer Zelle ändert die gesamte Zeile in eine Farbe einfärben.
In meinem Fall soll die Zeile 2 der Auslöser sein (siehe Bild). Die Zeile 2 beinhaltet nur Zahlen (0 und 3).

Leider bekomme ich keine Fehlermeldung bei meinem Code. Daher weiß ich leider nicht genau wo hier der Fehler liegt.

Was ich bis jetzt probiert habe ist folgendes:


DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
            if (dataGridView2.Rows[2].Cells.ToString().Contains ("0"))
            {
                cellStyle.BackColor = Color.Red;
                

            }

30.12.2021 - 20:57 Uhr

Hallo Abt,

Vielen Dank für deinen Post. Ich habe mir das nochmal genau durchgelesen und werde das künftig beherzigen.

Ich wünsche dir/euch einen guten Rutsch ins neue Jahr. 🙂

21.12.2021 - 22:22 Uhr

Hey Danone,

Wo war nur mein Kopf. Im Endeffekt lag es tatsächlich nur an den Leerzeichen.
Meine Abfrage funktioniert nun endlich. 🙂

Ich denke ich werde mal nach hause gehen. Reicht für Heute 🙂
Wünsche noch einen schönen Abend. Vielen Dank nochmal.

21.12.2021 - 21:51 Uhr

Und das gleiche auch bei den folgenden "Zeilen" (vor where, and und group by)...
Mach am besten jeweils ein Leerzeichen vor die Schlüsselwörter".

Guten Abend Th69,

Danke für deine Antwort.

Habe ich gemacht.
Das ist mir schon fast unangenehm aber jetzt bekomme ich eine neue Fehlermeldung. :\
Oracle.ManagedDataAccess.Client.OracleException: "ORA-00942: Tabelle oder View nicht vorhanden"
Aber warum sagt VS dass die Tabelle nicht exestiert? Ich habe meinen ConnectionString auf genau diese Abfrage/Benutzer abgestimmt.


 private void button5_Click(object sender, EventArgs e)
        {

            
            con.Open();
            OracleCommand cmd = new OracleCommand();


            cmd.CommandText = "select r.lrou_groupident AS Batchbezeichnung,lum.lwds_ident AS Bereich,round(sum(ll.lcsl_qtyhost/lum.lpu_factor)) AS Offene_GVEs,"
                              + " to_char(sysdate,'HH24:MI') AS Erstellzeit from lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r"
                              + " where lh.lcsh_ref = ll.lcsh_ref"
                              + " and ll.lprod_ref = l.lprod_ref"
                              + " and l.lprod_ref = lum.lprod_ref"
                              + " and r.lrou_ref = ll.lrou_ref"
                              + " and lum.lpu_zzsalesunit = 1"
                              + " and lum.lwds_ident in ('DPS', 'MPS', 'MAN', 'WAN')"
                              + " and trunc(r.lrou_date) between(sysdate - 5) and (sysdate)"
                              + " and ll.lcsl_state > 60"
                              + " group by r.lrou_groupident,lum.lwds_ident";

            cmd.Connection = con;
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);

            dataGridView1.AutoResizeColumns();
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            dataGridView1.DataSource = dataset.Tables[0];

            con.Close(); 
        }

21.12.2021 - 21:34 Uhr

Ohje. Okay darauf hätte ich echt drauf kommen können. Ist mir vorher nicht passiert da ich den CommandText in anderen abfragen in einer Zeile geschrieben hatte. Dankeschön 🙂

Nun habe ich aber die Fehlermeldung > Fehlermeldung:

Oracle.ManagedDataAccess.Client.OracleException: "ORA-00933: SQL-Befehl wurde nicht korrekt beendet" Das kann ich hier nicht ganz nachvollziehen


private void button5_Click(object sender, EventArgs e)
        {

            
            con.Open();
            OracleCommand cmd = new OracleCommand();


            cmd.CommandText = "select r.lrou_groupident AS Batchbezeichnung,lum.lwds_ident AS Bereich,"
                              + "round(sum(ll.lcsl_qtyhost/lum.lpu_factor)) AS Offene_GVEs,"
                              + "to_char(sysdate,'HH24:MI') AS Erstellzeit from lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r"
                              + "where lh.lcsh_ref = ll.lcsh_ref"
                              + "and ll.lprod_ref = l.lprod_ref"
                              + "and l.lprod_ref = lum.lprod_ref"
                              + "and r.lrou_ref = ll.lrou_ref"
                              + "and lum.lpu_zzsalesunit = 1"
                              + "and lum.lwds_ident in ('DPS', 'MPS', 'MAN', 'WAN')"
                              + "and trunc(r.lrou_date) between(sysdate - 5) and (sysdate)"
                              + "and ll.lcsl_state > 60"
                              + "group by r.lrou_groupident,lum.lwds_ident";

            cmd.Connection = con;
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);

            dataGridView1.AutoResizeColumns();
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            dataGridView1.DataSource = dataset.Tables[0];

            con.Close(); 
        }

21.12.2021 - 21:05 Uhr

Schau dir im Debugger mal den Inhalt deines cmd.CommandText an. Fällt dir dann bestimmt schnell auf 😉

Tipp: Leerzeichen

Hey Danone,

Bin ich Blind? Ich komme beim besten Willen nicht drauf.
Ich habe die Leerzeichen überprüft aber konnte nichts finden um ehrlich zu sein.


private void button5_Click(object sender, EventArgs e)
        {

            
            con.Open();
            OracleCommand cmd = new OracleCommand();


            cmd.CommandText = 
"select r.lrou_groupident AS Batchbezeichnung,lum.lwds_ident AS Bereich,"
+ "round(sum(ll.lcsl_qtyhost/lum.lpu_factor)) AS Offene_GVEs,"
+ "to_char(sysdate,'HH24:MI') AS Erstellzeit"
+ "From lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r"
+ "where lh.lcsh_ref = ll.lcsh_ref"
+ "and ll.lprod_ref = l.lprod_ref"
+ "and l.lprod_ref = lum.lprod_ref"
+ "and r.lrou_ref = ll.lrou_ref"
+ "and lum.lpu_zzsalesunit = 1"
+ "and lum.lwds_ident in ('DPS', 'MPS', 'MAN', 'WAN')"
+ "and trunc(r.lrou_date) between(sysdate - 5) and (sysdate)"
+ "and ll.lcsl_state > 60"
+ "group by r.lrou_groupident,lum.lwds_ident";

            cmd.Connection = con;
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);

            dataGridView1.AutoResizeColumns();
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            dataGridView1.DataSource = dataset.Tables[0];

            con.Close(); 
        }

21.12.2021 - 20:32 Uhr

Hallo zusammen,

ich habe bei einer Abfrage welche ich gerne in mein C# Programm einbinden möchte eine Fehlermeldung.
Könntet ihr euch einmal meine Eingabe ansehen? Habe ich etwas Übersehen? Alle anderen Abfragen funktionieren in meinem Programm.

Ich bekomme die Fehlermeldung Oracle.ManagedDataAccess.Client.OracleException: "ORA-00923: Schlüsselwort FROM nicht an erwarteter Stelle gefunden"

Das kann ich mir leider nicht erklären, da ich genau diese Abfrage auf der Datenbank ohne Probleme ausführen kann.

Ich danke euch!
Achso und schonmal Frohe Weihnachten. 🙂


private void button5_Click(object sender, EventArgs e)
        {
            con.Open();
            OracleCommand cmd = new OracleCommand();


            cmd.CommandText =   "select r.lrou_groupident AS Batchbezeichnung,lum.lwds_ident AS Bereich," +
                "round(sum(ll.lcsl_qtyhost / lum.lpu_factor))AS Offene_GVEs," +
                "to_char(sysdate, 'HH24:MI') AS Erstellzeit" +
                "from lcos_ship_head lh,lcos_ship_line ll,product l,lproduct_um lum,lroute r"+
                "where lh.lcsh_ref = ll.lcsh_ref" +
                "and ll.lprod_ref = l.lprod_ref" +
                "and l.lprod_ref = lum.lprod_ref" +
                "and r.lrou_ref = ll.lrou_ref" +
                "and lum.lpu_zzsalesunit = 1" +
                "and lum.lwds_ident in ('DPS', 'MPS', 'MAN', 'WAN')" +
                "and trunc(r.lrou_date) between(sysdate - 5) and (sysdate)" +
                "and ll.lcsl_state > 60" +
                "group by r.lrou_groupident,lum.lwds_ident";

            cmd.Connection = con;
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);

            dataGridView1.AutoResizeColumns();
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

            dataGridView1.DataSource = dataset.Tables[0];

            con.Close();
        }

In Oracle sieht es wie folgt aus und funktioniert wie erwünscht.


select r.lrou_groupident AS Batchbezeichnung,lum.lwds_ident AS Bereich,
round(sum(ll.lcsl_qtyhost/lum.lpu_factor))AS Offene_GVEs,

to_char(sysdate,'HH24:MI') AS Erstellzeit
                                        
from lcos_ship_head lh,
lcos_ship_line ll,
lproduct l,
lproduct_um lum,
lroute r
                                       
where lh.lcsh_ref = ll.lcsh_ref
and ll.lprod_ref = l.lprod_ref
and l.lprod_ref = lum.lprod_ref
and r.lrou_ref = ll.lrou_ref
and lum.LPU_UM = ll.LCSL_UM
and lum.lpu_zzsalesunit = 1
and lum.lwds_ident in ('DPS','MPS','MAN','WAN')
and trunc(r.lrou_date) between (sysdate -5) and (sysdate)
and ll.lcsl_state > 60  
                                
group by r.lrou_groupident,lum.lwds_ident

13.12.2021 - 07:32 Uhr

Hallo Abt,

Es lag tatscächlich an einem falschen ConnectioonString

Ich habe jetzt folgenden benutzt und ich bekomme jetzt eine Verbindung zur Datenbank.


<add name="con" connectionString="Data Source=b*******;Persist Security Info=True;User ID=b*******;Password=**********;Unicode=True" providerName="System.Data.OracleClient"/>

11.12.2021 - 13:44 Uhr

Timeouts sind meistens Verbindungsprobleme, zB Netzwerk, Firewall...

Das ist mir bewusst. Ich habe (hätte ich natürlich vorher dazu schreiben sollen) Die Verbindung von meinem Client zu der Datenbank getestet und hatte hier keinerlei Probleme mit der Verbindung.

Die Frage ist natürlich, warum bekomme ich keine Verbindung aus meinem Programm heraus?

Könnte jemand evtl. einmal über meinen ConnectionString schauen? Evtl. habe ich hier einen Fehler?


<connectionStrings>

		<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />


	</connectionStrings>

11.12.2021 - 08:01 Uhr

Info zur Datenbank

  • OCI: Version 11.1
  • Oracle Server Version PL/SQL Developer 11g Release 11.2.0.3.0
  • DLL: C:\OracleInstantClient\oci.dll

Die erforderlichen Daten für den "ConnectionString" habe ich mir aus der tnsnames.ora auf dem Server genommen.

Problembeschreibung

Hallo zusammen,
ich bekomme beim Ausführen (Klick auf den Button1) nach einer kurzen Zeit von etwa 15 Sekunden folgende Timeout Fehlermeldung:

Fehlermeldung:
Ausnahme ausgelöst: "Oracle.ManagedDataAccess.Client.OracleException" in Oracle.ManagedDataAccess.dll
Eine externe Komponente hat eine Ausnahme ausgelöst.

"OraConnect.exe" (CLR v4.0.30319: OraConnect.exe): "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies\Runtime\Microsoft.VisualStudio.Debugger.Runtime.Desktop.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Das Programm "[24004] OraConnect.exe" wurde mit Code -1 (0xffffffff) beendet.

Leider konnte ich dazu nichts finden und mich würde interessieren warum ich diese Fehlermeldung bekomme bzw. Wo ich ansetzen kann um das Problem zu lösen und eine Verbindung aufgebaut bekomme.

Für Ideen wäre ich euch sehr dankbar. 🙂


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client; 
using System.Configuration;
using System.Diagnostics;


//OCI: version 11.1
// Oracle Server Version PL/SQL Developer 11g Release 11.2.0.3.0
// DLL C:\OracleInstantClient\oci.dll



namespace OraConnect
{
    public partial class Form1 : Form
    {

        OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            
            con.Open();    
            MessageBox.Show("Connected");
            con.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            con.Close();
            Close();
        }
    }
}

App.Config


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

	
	
	<connectionStrings>

		<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />
		
		
	</connectionStrings>