Zum Inhalt springen

Problem mit Connection zur Access MDB


Loewchen0507

Empfohlene Beiträge

Hi Leute,

beim herstellen der Connection zur Access DB bekomme ich ein Problem... hier wird anscheinend nichts gemacht.


AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=S:\Cobra\Demodaten\DemoCoWiTest.mdb"


                using (AccessConn = new OleDbConnection(AccessConStr))

                {

                    myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);

                    AccessConn.Open(); // Connection öffnen


                    if (AccessConn.State.ToString() == "Open")

                        myEventLog.WriteEntry("AccessConnection");

                    else

                        myEventLog.WriteEntry("Access Not Connected");

                }

ähnlicher Code (nur mit ODBC) für eine Verbindung zu einem SQLServer funktioniert einwandfrei. Aber hier bekomme ich in den Eventlogs zwar noch "jetzt öffnen:" und den String raus. Aber dann nichts mehr... kann mir jemand helfen?

LG Loewchen + danke schon mal im voraus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Leute,

beim herstellen der Connection zur Access DB bekomme ich ein Problem... hier wird anscheinend nichts gemacht.

ähnlicher Code (nur mit ODBC) für eine Verbindung zu einem SQLServer funktioniert einwandfrei. Aber hier bekomme ich in den Eventlogs zwar noch "jetzt öffnen:" und den String raus. Aber dann nichts mehr... kann mir jemand helfen?

LG Loewchen + danke schon mal im voraus

Pack das ganze doch mal in try-catch und guck, ob er sich da verrammelt

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi Steinadler,

debuggen geht noch nicht, dass ist ein Dienst, muss ich erst noch debug fertig machen...

hier nochmal der komplette code:


        private static void OnTimedEvent(object source, ElapsedEventArgs e)

        {

            try

            {

                // Deklaration

                //OdbcCommand SQLCommand;

                //OdbcDataReader SQLreader;

                OdbcConnection SQLconn;

                //OdbcTransaction transaction = null;

                String SQLConnStr;

                OleDbConnection AccessConn;

                //OleDbCommand AccessCommand;

                //OleDbDataReader reader;

                String AccessConStr;

                int Richtung;

                int DBArt;


                // Initialisierung

                // Richtung

                // 1 = WinLine -> Cobra

                // 2 = Cobra -> WinLine

                Richtung = Properties.CoWi.Default.Richtung;


                // Cobra DB - Art

                // 1 -> MDB

                // 2 -> SQL

                DBArt = Properties.CoWi.Default.CobraDB;


                // EventLog Eintrag

                EventLog myEventLog = new EventLog();

                myEventLog.Source = "CoWiSource";

                myEventLog.WriteEntry("Try Connection");


                // Verbindungsaufbau zum SQL Server mit

                // Connectionstring:

                SQLConnStr = "Driver={SQL Server};Server=" + Properties.CoWi.Default.SQLServer + ";Database=" + Properties.CoWi.Default.SQLDB +

                             ";UID=" + Properties.CoWi.Default.SqlUser + ";PWD=" + Properties.CoWi.Default.SQLPWD + ";";

                SQLconn = new OdbcConnection(SQLConnStr);

                SQLconn.Open(); // Verbindung öffnen


                if (SQLconn.State.ToString() == "Open")

                    myEventLog.WriteEntry("SQL Connected");

                else

                    myEventLog.WriteEntry("SQL Not Connected");


                myEventLog.WriteEntry("start Access Connection");

                // Access Connection aufbauen

                AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Properties.CoWi.Default.AccesDB + "; Mode=ReadWrite; Persist Security Info=False";


                using (AccessConn = new OleDbConnection(AccessConStr))

                {

                    myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);

                    AccessConn.Open(); // Connection öffnen


                    //if (AccessConn.State.ToString() == "Open")

                    if (AccessConn.State == ConnectionState.Open) 

                        myEventLog.WriteEntry("AccessConnection");

                    else

                        myEventLog.WriteEntry("Access Not Connected");

                }


                SQLconn.Close();

                AccessConn.Close();

            }

            catch (Exception ex)

            {

                // Anweisungen 

                DateTime Time;

                Time = DateTime.Now;

                string Project = "";

                StreamWriter writer;


                MessageBox.Show("Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihre Einstellungen in der Konfiguration. \n" + ex.Data.ToString() + "\n" + ex.Message.ToString() + "\n" + ex.TargetSite.ToString(),

                "Exception",

                MessageBoxButtons.OK,

                MessageBoxIcon.Error,

                MessageBoxDefaultButton.Button2);


                Project = Path.GetFullPath("CoWi-Dienst.exe");

                Project = Project.Substring(0, Project.Length - 15) + "Exception.txt";

                // Ist datei nicht vorhanden wird sie erzeugt und gefüllt

                if (!File.Exists(Project))

                {

                    // Datei wird erzeugt

                    using (StreamWriter sw = File.CreateText(Project))

                    {

                        sw.WriteLine(Time + "  Exception");

                        sw.WriteLine(Time + "  " + ex.Data.ToString());

                        sw.WriteLine(Time + "  " + ex.Message.ToString());

                        sw.WriteLine(Time + "  " + ex.Source.ToString());

                        sw.WriteLine(Time + "  " + ex.TargetSite.ToString());

                        sw.Close();

                    }

                }

                // Ist sie vorhanden wird der Inhalt der Datei gesichert (helper)

                // und in die neue Datei geschrieben

                // dann erst wird alles neue angefügt

                else

                {

                    String helper = "";

                    helper = File.ReadAllText(Project);

                    writer = File.CreateText(Project);

                    writer.WriteLine(helper);

                    writer.WriteLine(Time + "  Exception");

                    writer.WriteLine(Time + "  " + ex.Data.ToString());

                    writer.WriteLine(Time + "  " + ex.Message.ToString());

                    writer.WriteLine(Time + "  " + ex.Source.ToString());

                    writer.WriteLine(Time + "  " + ex.TargetSite.ToString());

                    writer.Close();

                }

            }

            finally

            {

                // Abschlussarbeiten 

            }

        }

bedanke mich wirklich für eure bemühungen... ich bin wirklich verzweifelt und sehe den dämlichen fehler nicht...

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie oft findet das denn statt???

Wie schnell tickt der Timer?

Mach ihn einfach mal langsamer.

Ansonsten kann ich nicht richtig verstehen, für was du das "using" dort unten benutzt. Ich finde, du brauchst das nicht.

Änder das mal...


OleDbConnection AccessConn = new OleDbConnection(AccessConStr))


                    myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);

                    AccessConn.Open(); // Connection öffnen


                    //if (AccessConn.State.ToString() == "Open")

                    if (AccessConn.State == ConnectionState.Open) 

                        myEventLog.WriteEntry("AccessConnection");

                    else

                        myEventLog.WriteEntry("Access Not Connected");

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Das Using war nur ein verzweifelter versuch um eventuell den Fehler zu finden...

Der Timer läuft momentan auf 30000 msek also 30 sek... hatte ihn aber auch shcon mal auf eine stunde... ziemlich komisch... ich änder das mit dem using nochmal und verlängere die zeitspanne mal auf 10 minuten, mal sehen was dann passiert... :)

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

jetzt verstehe ich die Welt nicht mehr...

der gleiche Code in einer Windows Application funktioniert...

Warum funktioniert dieser Code als Windows Anwendung aber als Windows Dienst nicht?

Gibts da noch Grundlegende Unterschiede auf die Geachtete werden muss???


using System;

using System.Collections.Generic;

using System.Windows.Forms;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Text;

using System.Timers;

using System.Drawing;

using System.Data.OleDb;

using System.Data.Odbc;

using System.IO;


namespace CoWiTest

{

    static class Program

    {

        /// <summary>

        /// Der Haupteinstiegspunkt für die Anwendung.

        /// </summary>

        [STAThread]

        static void Main()

        {

            System.Timers.Timer aTimer = new System.Timers.Timer();


            // Hook up the Elapsed event for the timer.

            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);


            // Set the Interval to 2 seconds (2000 milliseconds).

            aTimer.Interval = 30000;

            aTimer.Enabled = true;


            // Keep the timer alive until the end of Main.

            GC.KeepAlive(aTimer);


            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());



        }

        private static void OnTimedEvent(object source, ElapsedEventArgs e)

        {

            try

            {

                // Deklaration

                OdbcConnection SQLconn;

                String SQLConnStr;

                OleDbConnection AccessConn;

                String AccessConStr;


                // EventLog Eintrag

                EventLog myEventLog = new EventLog();

                myEventLog.Source = "CoWiSource";

                myEventLog.WriteEntry("Try Connection");


                // Verbindungsaufbau zum SQL Server mit

                // Connectionstring:

                SQLConnStr = "Driver={SQL Server};Server=NAGEL;Database=CONTEMP;UID=sa;PWD=dragon;";

                SQLconn = new OdbcConnection(SQLConnStr);

                SQLconn.Open(); // Verbindung öffnen


                if (SQLconn.State.ToString() == "Open")

                    myEventLog.WriteEntry("SQL Connected");

                else

                    myEventLog.WriteEntry("SQL Not Connected");


                myEventLog.WriteEntry("start Access Connection");

                // Access Connection aufbauen

                AccessConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.Settings.Default.Access + ";Mode=ReadWrite;Persist Security Info=False";


                using (AccessConn = new OleDbConnection(AccessConStr))

                {

                    myEventLog.WriteEntry("jetzt öffnen mit: " + AccessConStr);

                    AccessConn.Open(); // Connection öffnen


                    //if (AccessConn.State.ToString() == "Open")

                    if (AccessConn.State == ConnectionState.Open)

                        myEventLog.WriteEntry("AccessConnection");

                    else

                        myEventLog.WriteEntry("Access Not Connected");

                }


                SQLconn.Close();

                AccessConn.Close();

            }

            catch (Exception ex)

            {

                // Anweisungen 

                DateTime Time;

                Time = DateTime.Now;

                string Project = "";

                StreamWriter writer;


                MessageBox.Show("Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihre Einstellungen in der Konfiguration. \n" + ex.Data.ToString() + "\n" + ex.Message.ToString() + "\n" + ex.TargetSite.ToString(),

                "Exception",

                MessageBoxButtons.OK,

                MessageBoxIcon.Error,

                MessageBoxDefaultButton.Button2);


                Project = Path.GetFullPath("CoWi-Dienst.exe");

                Project = Project.Substring(0, Project.Length - 15) + "Exception.txt";

                // Ist datei nicht vorhanden wird sie erzeugt und gefüllt

                if (!File.Exists(Project))

                {

                    // Datei wird erzeugt

                    using (StreamWriter sw = File.CreateText(Project))

                    {

                        sw.WriteLine(Time + "  Exception");

                        sw.WriteLine(Time + "  " + ex.Data.ToString());

                        sw.WriteLine(Time + "  " + ex.Message.ToString());

                        sw.WriteLine(Time + "  " + ex.Source.ToString());

                        sw.WriteLine(Time + "  " + ex.TargetSite.ToString());

                        sw.Close();

                    }

                }

                // Ist sie vorhanden wird der Inhalt der Datei gesichert (helper)

                // und in die neue Datei geschrieben

                // dann erst wird alles neue angefügt

                else

                {

                    String helper = "";

                    helper = File.ReadAllText(Project);

                    writer = File.CreateText(Project);

                    writer.WriteLine(helper);

                    writer.WriteLine(Time + "  Exception");

                    writer.WriteLine(Time + "  " + ex.Data.ToString());

                    writer.WriteLine(Time + "  " + ex.Message.ToString());

                    writer.WriteLine(Time + "  " + ex.Source.ToString());

                    writer.WriteLine(Time + "  " + ex.TargetSite.ToString());

                    writer.Close();

                }

            }

            finally

            {

                // Abschlussarbeiten 

            }

        }


    }

}

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich habe herausgefunden woran es lag.

Es waren zwei Probleme.

Zuerst war es nur das Problem, dass ich einen Netzwerkpfad angegeben habe: S:\test\test\test.mdb

Das zweite Problem ist dann erst während der ganzen Änderungen entstanden. Ich hatte den connectionString der Access DB erweitert mit:

+ ";Mode=ReadWrite;Persist Security Info=False"

in der Windows Anwendung war das an dieser Stelle auch kein Problem. Im Dienst jedoch schon.

Nun stellen Sich mir nur noch zwei Fragen:

1. Warum werden keine Fehlermeldungen geschmissen, bzw. kein Fehlerprotokoll geschrieben wie in der Fehlerbehandlung zu sehen ist?

2. Warum funktioniert die Connection mit dem angefügten String (siehe oben) bei einer WindowsAnwendung einwandfrei und bei dem WindowsDienst nicht?

Liebe Grüße Loewchen

PS.: und danke für Deine Bemühungen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...