Loewchen0507 Geschrieben 19. April 2007 Teilen Geschrieben 19. April 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 19. April 2007 Teilen Geschrieben 19. April 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 19. April 2007 Autor Teilen Geschrieben 19. April 2007 schon gemacht... ist da drum rum gebaut... Ich bekomme keine Fehlermeldung... Leider... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 20. April 2007 Teilen Geschrieben 20. April 2007 Und was passiert dann eigentlich? Stürzt das Programm ab oder läuft es an der Stelle dann weiter? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 20. April 2007 Autor Teilen Geschrieben 20. April 2007 nein es läuft ganz normal weiter... es kommt während dessen mehrmals an diese stelle, und immer wieder passiert das gleiche in den eventlogs sehe ich immer wieder die gleichen ausgaben, nur nicht die, die ich gerne möchte... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 20. April 2007 Teilen Geschrieben 20. April 2007 Wenn es dann ganz normal weiterläuft, dann muss das an deinem myEventLog liegen. Wo erstellst du denn das? Das kann doch nicht sein, debug doch mal, ob er wirklich in eins von if oder else kommt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 20. April 2007 Autor Teilen Geschrieben 20. April 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 20. April 2007 Teilen Geschrieben 20. April 2007 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"); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 20. April 2007 Autor Teilen Geschrieben 20. April 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
steinadler Geschrieben 20. April 2007 Teilen Geschrieben 20. April 2007 Mach dir mal ein neues Projekt und pack das ganze rein. Also ne normale Windows-Anwendung. Dort kannst du wenigstens ordentlich debuggen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 20. April 2007 Autor Teilen Geschrieben 20. April 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 20. April 2007 Autor Teilen Geschrieben 20. April 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.