Laden...

Forenbeiträge von x86fanboy Ingesamt 40 Beiträge

30.08.2007 - 08:13 Uhr

Aus dem Link den ich gepostetet habe:

24.2.5.6.4. Handling Invalid Dates

Although it is strongly recommended that you avoid the use of invalid dates within your .NET application, it is possible to use invalid dates by means of the MySqlDateTime datatype.

The MySqlDateTime datatype supports the same date values that are supported by the MySQL server. The default behavior of Connector/NET is to return a .NET DateTime object for valid date values, and return an error for invalid dates. This default can be modified to cause Connector/NET to return MySqlDateTime objects for invalid dates.

To instruct Connector/NET to return a MySqlDateTime object for invalid dates, add the following line to your connection string:

Allow Zero Datetime=True

Please note that the use of the MySqlDateTime class can still be problematic. The following are some known issues:

  1. Data binding for invalid dates can still cause errors (zero dates like 0000-00-00 do not seem to have this problem).
  2. The ToString method return a date formatted in the standard MySQL format (for example, 2005-02-23 08:50:25). This differs from the ToString behavior of the .NET DateTime class.
  3. The MySqlDateTime class supports NULL dates, while the .NET DateTime class does not. This can cause errors when trying to convert a MySQLDateTime to a DateTime if you do not check for NULL first.

Because of the known issues, the best recommendation is still to use only valid dates in your application.

Oder du probierst reader.GetString() und DateTime.TryParse.

29.08.2007 - 22:19 Uhr

Bei ValueTypes hat das weniger mit dem Casten zu tun, als mit dem Boxing bzw. Unboxing welches beim Einfügen und Auslesen aus einer (z.B.) ArrayList stattfindet.

29.08.2007 - 22:11 Uhr

Original von falangkinjau
Hallo memphis0815,

versuch es mal mit:

  
reader.GetDateTime(deinspaltenindex)  
  

Gruß falangkinjau

Das bringt nichts, da 0000-00-00 kein gültiges Datum ist und von der DateTime-Klasse nicht akzeptiert wird.

29.08.2007 - 22:09 Uhr

Original von memphis0815

Das geht doch sicher auch eleganter bzw. fehlerunanfälliger, oder?

Viele Grüße

Ja, indem man solchen Unsinn erst gar nicht in die Datenbank kommen lässt -> Sql Mode 'NO_ZERO_DATE' und 'NO_ZERO_IN_DATE' aktivieren bzw. gleich Strict Mode einschalten: http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

Außerdem solltest du reader.GetDateTime() verwenden und einen Blick in die Connector/.NET-Doku werfen: http://dev.mysql.com/doc/refman/5.0/en/connector-net-using-datetime.html

04.08.2007 - 18:00 Uhr

Original von memphis0815
ich arbeite an einem Tool, dass Daten aus einem CSV-File, dass von einer lokalen App erstellt wird, in eine adäquate MySQL-DB schaufeln soll.

Warum machst du das selbst? Dafür gibt es z.B. mysqlimport und wenns programmatisch erfolgen soll, z.B. Filehelpers.

28.07.2007 - 15:35 Uhr

Das ist vielleicht interessant für dich: http://blogs.msdn.com/ricom/archive/2007/06/25/caching-redux.aspx

12.06.2007 - 14:21 Uhr

Original von Gemelon
Hallo x86fanboy,
ich greife auf die XML Datei mit der folgenden Methode zu:

  
            string EcecutingAssemblyPath = Path.GetFullPath(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));  
  
string ConfigFilePath = EcecutingAssemblyPath + @"\PluginConfig.xml";  
  
DataSet ConfigDataSet = new DataSet();  
ConfigDataSet.ReadXml(ConfigFilePath);  
  

Lass mal die Sache mit GetExecutingAssembly().Location weg. Wenn sich die Datei im gleichen Verzeichnis wie das Programm befindet, brauchst du gar keinen Pfad anzugeben (außer natürlich Environment.CurrentDirectory wurde geändert).

Wie trägt man den PrivateBinPath denn in der App.Config ein? In welcher Section und wie sieht der eintrag dann aus?

http://msdn2.microsoft.com/en-us/library/823z9h8w(VS.80).aspx -> Ganz unten ist ein Beispiel.

11.06.2007 - 15:01 Uhr

Original von Gemelon
Danke x86fanboy für die Antwort,
ich hatte jetzt erst Zeit das mal auszuprobieren. Es geht leider nicht. Ich habe mal den Ordner gesucht wo das hin installiert wird. Die XML Datei ist nicht im selben Ordner wie die EXE.

Wie greifst du auf die Dateien zu?

Es ist aber notwendig dass sie im selben Ordner ist. Ausserdem habe ich noch ein paar unabhängige Komponenten als DLLs, die werden überhaupt nicht mit Kopiert. Die Komponenten sind nicht über einen verweis mit dem Hauptprogramm verbunden, die werden erst während der Laufzeit, je nach bedarf nachgeladen. Wie kann ich es anstellen dass die auch mit installiert werden?

Auch das ist kein Problem. Auch hier legst du wieder einen Ordner in deinem Projekt an, zu, fügst ihn zu den ClickOnce Dateien hinzu und trägst den Namen des Ordners in der App.config des Programms im PrivateBinPath ein.

Wir diesen beiden Dinge auch in unsere ClickOnce-Applikation und sie funktionieren ohne Probleme.

07.06.2007 - 18:27 Uhr

Original von Gemelon
Hallo ich habe in meinem Projekt mehrere zusätzliche Dateien, jpg, txt und andere. Diese Dateien sollen da gespeichert werden wo auch die exe-Datei des Programms ist. Wie kann ich nun ClickOnce dazu bringen die auch mit zu Installieren?

Füge die Dateien in deine VS-Solution ein, dann kannst du sie in den Publish-Optionen unter Application Files hinzufügen.

Weiss eigentlich jemand wo die exe Datei nach der Installation ist?

C:\Dokumente und Einstellungen\Benutzername\Lokale Einstellungen\Apps\2.0\ und dann die Ordner mit den kryptischen Name durchklicken.

10.05.2007 - 16:23 Uhr

Neben den o.g. Sachen könntest du dir auch mal LOAD DATA INFILE anschauen. Eine weitere Möglichkeit sind Prepared Statements, muss aber seperat aktviert werden, da es laut Aussage des Entwicklers vom MySql .Net Connector zu Dateninkosistenzen führen kann.

17.03.2007 - 11:02 Uhr

Original von eigeneachse
Hallo FZelle,
ClickOnce würde mir vom Umfang her vollkommen ausreichen. Das ist im Prinzip genau das was ich haben will. Ich habe mit ClickOnce nur das Problem, dass ich Firefox User dazu zwingen muss entweder über den IE zu installen oder das FFClickOnce Plugin zu installieren. Finde ich persönlich etwas unschön.

http://channel9.msdn.com/ShowPost.aspx?PostID=138879

Damit kannst du dir eine Setup.exe erstellen, die mit allen Browsern funktioniert. Setzen wir schon längere Zeit erfolgreich ein.

Das zweite Proble was mir bisher mit ClickOnce aufgefallen ist, ist dass manche User anstatt dem InstallDialog nur das Manifest im Browser angezeigt bekommen. Dieses Problem konnte ich bisher auch nicht Lösen.

Wahrscheinlich sendet der Server die falschen Mime-Types:

application/x-ms-application .application
application/x-ms-application .manifest

Damit sollte es gehen.

29.12.2006 - 09:11 Uhr

Wirklich? also bei MS SQL scheint es zu funktionieren (steht so zumindest in meinem ADO.NET Buch)

Das war mir nicht bewusst. Ich kann später mal schauen ob dass auch mit MySQL funktionieren sollte. Benutzt du den neuesten Connector (5.0.2)?

28.12.2006 - 22:00 Uhr

Sowas funktioniert IMHO nur bei SPs. Mach's doch so (Syntax nicht überprüft, aber so in der Art geht's):


MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection("Server=localhost; Database=MDB; UserId=xxxx; Password=xxxx");
      string sql = "INSERT INTO artists " +
        "  VALUES (null, ?name); " +
        "SELECT LAST_INSERT_ID();";
      MySql.Data.MySqlClient.MySqlCommand result = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);
      conn.Open();
      result.Parameters.Add("?name", MySql.Data.MySqlClient.MySqlDbType.VarChar, 45, "name").Direction = ParameterDirection.InputOutput;
      result.Parameters["?name"].Value = "Test";
     int id = (int) result.ExecuteScalar();


11.09.2006 - 22:44 Uhr

Ich weiss gar nicht was es daran zu diskutieren gibt, McConnell gibt herbivore recht -> EOD 😁

05.04.2006 - 12:42 Uhr

Stichworte: ListView.Items, ListViewItem, ListViewItem.SubItems. Die MSDN sollte außerdem ein Beispiel enthalten.

05.04.2006 - 12:37 Uhr

Original von T-Man
@x86fanboy:

Gilt das denn auch für lokale Variablen in Methoden?

Nein.

05.04.2006 - 12:32 Uhr

Woher sollte der Compiler auch wissen, ob eine nicht initialisierte Variable true oder false ist, bzw. welchen Wert er im Fall einer fehlenden Initialisierung zuweisen soll...

Z.B. aus der C-Sharp Language Specification 😉

10.4.4 Field initialization
The initial value of a field, whether it be a static field or an instance field, is the default value (§5.2) of the
field’s type. It is not possible to observe the value of a field before this default initialization has occurred, and a
field is thus never “uninitialized”. The example

  
using System;  
class Test  
{  
    static bool b;  
    int i;  
    static void Main() {  
         Test t = new Test();   
         Console.WriteLine("b = {0}, i = {1}", b, t.i);  
    }  
}  
  

produces the output
b = False, i = 0
because b and i are both automatically initialized to default values.

17.03.2006 - 19:31 Uhr

Du könntest dein Programm auch auf .Net 1.1 zurückportieren. Das haben durch SP2 die meisten Leute installiert.

Zu dem anderen Punkt: Du meinst also, dass es prinzipiell möglich ist?

Es geht irgendwie, von den Einzelheiten hab' ich keine Ahnung. Die Suche ist dein Freund.

17.03.2006 - 19:20 Uhr

Mit ClickOnce wird das Framework während der Installation automatisch installiert, falls nicht vorhanden. Ansonsten -> Suche: Programm ohne Framework ausführen oder so ähnlich.

17.03.2006 - 18:59 Uhr

OK, ich glaube, das lasse ich lieber sein (läuft eh nur mit dem IE, und wer hat den schon noch?) 😉

Mitnichten! Das Ganze funktioniert auch mit Firefox sehr gut, wenn man sich seine Setup.exe selbst kompiliert. Einen Link dazu habe ich schon mal geposted, sollte über die Forensuche ganz einfach zu finden sein.

07.03.2006 - 10:00 Uhr

C:\Dokumente und Einstellungen\Dein Benutzername\Lokale Einstellungen\Anwendungsdaten\Anwendungsname

26.02.2006 - 00:28 Uhr

Erscheinungsdatum: 6. November 2020

Bald? 😁

22.02.2006 - 18:19 Uhr

Math.Pow() ist dein Freund.

21.02.2006 - 17:57 Uhr

Um mal ein wenig Licht in die ganze Sache zu bringen:

Drag and Drop läuft ebenso wie z.B. das Clipboard noch über COM-Interop. Dazu wird intern OleInitialize() aufgerufen, welches ein STA erfordert. Deshalb, und für den Fall das eine Windows Forms Applikation ein ActiveX-Control hostet, welches per Definition ein STA-Objekt ist, wird auch die Main()-Methode von Windows Forms Applikationen automatisch von VS mit [STAThread] markiert.

Aus der MSDN:

A call to OleInitialize on an apartment that was previously initialized as multithreaded will fail[...]

01.02.2006 - 21:46 Uhr

Ok. Danke dir!

01.02.2006 - 21:28 Uhr

Hi herbivore!

Wahrscheinlich ist meine Intention nicht so richtig rübergekommen: es wird ja ein Pointer auf ein Windowhandle übergeben. Ich will dieses Handle nicht schliessen, da dass Fenster weiter existiert wenn obige Klasse entsorgt wird. Ich möchte den Pointer, den ich in der Klasse deklariert habe, ordnungsgemäß entsorgen und frage mich ob dazu CloseHandle notwendig ist, oder IntPtr.Zero ausreicht.

01.02.2006 - 21:06 Uhr

Folgende Klasse:



class Foo : IDisposable
{
     private IntPtr handle;

      public Foo(IntPtr handle)
      {
           this.handle = handle;
      }
}


Der Konstruktor bekommt das Handle des Fensters welches die Klasse instanziert übergeben. Muss ich in Dispose() CloseHandle(this.handle) aufrufen, oder reicht es den Pointer auf IntPtr.Zero zu setzen?

22.01.2006 - 19:03 Uhr

@ZiMD:

Es liegt mit ziemlicher Sicherheit daran, dass dein Webserver nicht die korrekten Mime-Types sendet. Siehe hier.

29.12.2005 - 15:37 Uhr

Diese Version tut's auch nicht?

11.12.2005 - 00:37 Uhr

@SimonKnight6600

Der Server muss folgende Mime-Types senden:

application/x-ms-application .application
application/x-ms-application .manifest

Siehe auch hier

@Der Eisbär:

Theoretisch sollte ClickOnce mit allen Browsern funktionieren:

http://weblogs.asp.net/grobinson/archive/2005/09/01/424201.aspx

Praktisch tut es das aber nicht:

http://www.hanselman.com/blog/ClickOnceAndFireFoxWithACustomSetupEqualsClickThriceAndBeDisappointed.aspx

26.11.2005 - 23:02 Uhr

Hallo herbivore!

Hab mal eine Testimplementierung mit Events gemacht. Gefällt mir soweit ganz gut. Danke für den Tipp!

26.11.2005 - 14:00 Uhr

Hi!

Ich verwende das Command Pattern um PrintJobs auszuführen. Bei der Ausführung eines PrintJobs können diverse Exceptions geworfen werden, auf die ich entsprechend reagieren möchte. Das ist natürlich kein Problem wenn ich den Invoker weglasse und den Client den PrintJob selbst starten lasse. Ich möchte die PrintJobs aber von einem Invoker in einer Queue o.ä. verwalten lassen und habe noch keine elegante Lösung gefunden wie ich dem Client dann die Exception(s) zugänglich mache. Evtl. mit einem Callback und State Object, aber das gefällt mir noch nicht so recht.

Gibt es für diese Situation noch andere Möglichkeiten/Best Practices o.ä.?

23.11.2005 - 13:15 Uhr

Original von kde05
Sind die Programme die ich damit entwickle auch unter GPL oder ist damit gemeint, dass wenn ich #Develop selber ändern würde auch den Code frei stellen müsste?

Letzteres. Wenn du die exe mit deinen Änderungen aber niemandem zugänglich machst, dann brauchst du die Quellen auch nicht rauszugeben.

Kann man damit Programme im Betrieb erstellen[für eigengebrauch und nicht zum Verkauf]?

Ja.

Müsste ich dann diese Programme (mit Code?) irgendwo freigeben?

Nein. Siehe auch hier

21.11.2005 - 21:20 Uhr

Original von svenson
Ich bin mir nicht sicher, aber nach dem was mir bekannt ist, gilt das .NET probing nur für Assemblies. Da aber unmanaged DLLs keine Assemblies sind, wird hier das Standard-Verfahren zur DLL-Auffindung zum Tragen kommen (absolut bzw. lokal+PATH).

Das hab' ich mir schon fast gedacht 🙁

19.11.2005 - 15:22 Uhr

Hi!

Ich habe einen Haufen dll's einer externen Komponente die ich in ein eigenes Verzeichnis verfrachten möchte. Die dll's sind alle unmanaged, es gibt nur eine .Net-dll welche sich im Hauptverzeichnis befindet und auf die anderen dll's zugreift.

Problem ist, dass die dll's in diesem Ordner nicht gefunden werden (System.DllNotFoundException), obwohl ich in der app.config <probing privatePath> richtig gesetzt habe. Merkwürdig ist, dass wenn ich alle von meiner Anwendung benötigten dll's in dieses Verzeichnis packe, es ohne Probleme funktioniert.

Bin für jeden Tipp dankbar!