Zum Inhalt springen

Gooose

Mitglieder
  • Gesamte Inhalte

    427
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    9

Beiträge von Gooose

  1. Bis zum 1.7.

    Alter: 34

    Wohnort: Dortmund

    letzter Ausbildungsabschluss (als was und wann): FIAE 2009

    Berufserfahrung: 3 Jahre

    Vorbildung: Fachabitur, abgebrochenes Studium

    Arbeitsort: Düsseldorf

    Grösse der Firma: 200

    Tarif: -

    Branche der Firma: Gesundheitswesen

    Arbeitsstunden pro Woche laut Vertrag: 40

    Arbeitsstunden pro Woche real: 40

    Gesamtjahresbrutto: 37872 - 41028

    Anzahl der Monatsgehälter: 12

    Anzahl der Urlaubstage: 30

    Sonder- / Sozialleistungen: 600 Euro Rentenfont

    Variabler Anteil am Gehalt: Ein Monatsgehalt

    Verantwortung: -

    Tätigkeiten (Aufgaben/Aufgabenbereich):

    Konzeption und Entwicklung von Software im Bereich eProcurement / Content Management

    Ab dem 1.7.

    Alter: 35

    Wohnort: Dortmund

    letzter Ausbildungsabschluss (als was und wann): FIAE 2009

    Berufserfahrung: 3 Jahre

    Vorbildung: Fachabitur, abgebrochenes Studium

    Arbeitsort: Dortmund

    Grösse der Firma: 100

    Tarif: -

    Branche der Firma: Hotel- und Gaststättengewerbe

    Arbeitsstunden pro Woche laut Vertrag: 40

    Arbeitsstunden pro Woche real: findet sich

    Gesamtjahresbrutto: 49000

    Anzahl der Monatsgehälter: 12

    Anzahl der Urlaubstage: 28

    Sonder- / Sozialleistungen: -

    Variabler Anteil am Gehalt: -

    Verantwortung: -

    Tätigkeiten (Aufgaben/Aufgabenbereich):

    Backend Entwicklung / DWH / BI / Reporting / Messaging / tba...

  2. Nehmen wir doch mal das obere Beispiel mit der Adventureworks DB:

    Mal angenommen eine Klasse für Employee würde so aussehen:

    
    public class Employee
    
    {
    
        public int EmployeeID { get; set; }
    
        public string LoginID { get; set; }
    
        public DateTime? BirthDate { get; set; }
    
    }
    
    
    Wenn man jetzt eine Liste von Employee aus der Datenbank haben wollte, könnte die Abfrage so ausehen:
    
    SqlCommand cmd = new SqlCommand("select * from [adventureworks].[humanresources].[employee] where hiredate between @lowest and @highest", conn);
    
    cmd.Parameters.AddWithValue("lowest", new DateTime(2000, 1, 1));
    
    cmd.Parameters.AddWithValue("highest", new DateTime(2002, 1, 1));
    
    
    SqlDataReader reader = cmd.ExecuteReader();
    
    List<Employee> result = new List<Employee>();
    
    while (reader.Read())
    
    {
    
        Employee currentEmployee = new Employee();
    
        currentEmployee.LoginID = (string)reader["LoginID"];
    
        currentEmployee.EmployeeID = (int)reader["EmployeeID"];
    
        currentEmployee.BirthDate = (DateTime?)reader["BirthDate"];
    
        result.Add(currentEmployee);
    
    }
    
    
    reader.Close();
    
    conn.Close();
    
    

    Jetzt könnte man die Liste zurückgeben und damit weiterarbeiten. Dies ist auch ein Beispiel dafür, wie man die SQL-Datentypen wieder "zurückmappt".

    Kurze Anmerkung zu dem "DateTime?":

    Beim SQL-Server lassen sich Datumsspalten nullen, was unter .NET nicht geht. Schau dir hierzu mal Nullable Types (C# Programming Guide) an. Wenn du unter .NET mit Datenbanken arbeitest, solltest du dich mit den Datentypen genau auseinandersetzen. Das erspart dir später viel Arbeit ;)

    Schaue dir auch die beiden close Methoden an:

    SqlConnection.Close Method

    SqlDataReader.Close Method

    Das Freigeben von Ressourcen ist gerade bei Datenbanken wichtig.

  3. command.Parameters.Add("@ID", SqlDbType.Int);
    Ich füge command dem Parameter "@ID" hinzu der vom Typ SqlDbType.Int ist zu?
    command.Parameters["@ID"].Value = customerID;
    "@ID" wird eine Variable hinzugefügt, die vom Typ SqlDbType ist? D.h. customerID=5 ist äquivalent zu command.Parameters["@ID"].Value=5?
    Hier wird beschrieben wie der Parameter an den Sql-Server übergeben wird. Einfacher währe es hier zu sagen:
    command.Parameters.AddWithValue("@ID", customerID);
    Das währe das gleiche Verhalten.
    command.Parameters.AddWithValue("@demographics", demoXml);
    Wie oben mit customerID nur mit einer einzeiligen Anweisung? Geht man in diesem Beispiel davon aus, dass der Inhalt einer XML-Datei in "demoXml" vorher eingelesen wurde?
    Davon wird hier ausgegangen.
    Wird für dt1 bspw. bei Auswahl des Datums 29.01.2012 eine Uhrzeit von 00:00:000 gespeichert, damit "lowest" auch wirklich die geringste anzunehmende Uhrzeit ist, um einen Vergleich mit BETWEEN zu ermöglichen?
    In meinem Beispiel erzeuge ich ja ein DateTime Objekt ohne Zeitangabe. die Zeit wird hier mit Nullen belegt. Du kannst dir das beispielsweise im Command Window des Visual Studios anschauen:
    >? new DateTime(2012,1,1).ToString()
    
    "01.01.2012 00:00:00"
    Weiteres kannst du unter DateTime in der MSDN nachlesen.
    Was passiert, wenn der DateTimePicker von einem anderen System mit unterschiedlicher Spracheinstellung zu dem System übermittelt, das den Befehl an die Datenbank ausführt? Werden beide in eine Art Standardformat gebracht, um Kompatibilität zu erreichen?
    Das müsste ich auch ausprobieren ;) Ich denke aber, das mögliche auftretende Probleme durch das Verwenden von Parametern minimiert werden.
    Somit ist sowohl der DateTimePicker als auch die SQL-Anweisung kompatibel zueinander, da beide vom selben Typ sind?
    Kompatibel ist vielleicht ein wenig ungenau. Wir haben hier zwei Welten. Zum einen haben wir den SQL-Server, zum anderen die .NET Umgebung. Im Endeffekt hilft dir die SqlCommand Klasse SQL Statements an den Sql Server zu schicken. Aus dem Command
    
    SqlCommand cmd = new SqlCommand("select * from [adventureworks].[humanresources].[employee] where hiredate between @lowest and @highest", conn);
    
    cmd.Parameters.AddWithValue("lowest", new DateTime(2000, 1, 1));
    
    cmd.Parameters.AddWithValue("highest", new DateTime(2002, 1, 1));
    
    
    kommt folgendes am SQL-Server an:
    exec sp_executesql N'select * from [adventureworks].[humanresources].[employee] where hiredate between @lowest and @highest',N'@lowest datetime,@highest datetime',@lowest='2000-01-01 00:00:00',@highest='2002-01-01 00:00:00'
    
    

    Mit Hilfe von sp_executesql können SQL-Statements mit Parametern aufgerufen werden. Genau dabei hilft dir die SqlCommand Klasse.

    Am Rande:

    Was würdest du bei einem Insert / Update Statement machen? Wie würde wohl das SQL ohne die Verwendung von Parametern aussehen, wenn die Tabelle 10 oder mehr Spalten hat?

    Mein Tipp:

    Wenn ich mich in neue Themengebiete einarbeite, versuche ich die Komplexität so gering wie möglich zu halten.

    In diesem Fall, baue dir erst mal eine einfache Konsolen-Anwendung, die nichts weiter macht als dieses Statement abzusetzen. Wenn Fehler auftreten, kann man diese leichter lokalisieren.

  4. Was versteht man unter "Mapping"? Etwa das Suchen/Selektieren?

    Hierbei ist das Datentyp-Mapping zwischen .NET und SQL-Server gemeint. Hier mal eine Übersicht: Mapping CLR Parameter Data

    Ich habe mit Parametern noch nie gearbeitet ...

    Schau dir mal oben den Link an. Da ist es gut erklärt. Gerade am Anfang ist die MSDN ein guter Freund. Innerhalb des Visual Studios kommst du meistens direkt auf die passenden MSDN Seiten, wo du weitere Erklärungen zu .Net Klassen, - Methoden und - Properties findest.

    Ich habe am Wochenende keinen Zugriff auf das Projekt

    Die MS SQL Server Express Version kannst du dir kostenlos runterladen. Die Beispiel Datenbank Adventure Works findest du unter Codeplex. So kannst du dich projektunabhängig mit dem Thema beschäftigen.

    Probiere einfach mal ein wenig was aus. Dann bekommst du ein Gefühl für die Technik und merkst schneller was zielführend ist und was nicht.

    Wenn dt1 und dt2 vom Typ System.DateTime sind, kann die Abfrage so aussehen:

    cmd.CommandText = "SELECT * FROM Calibration WHERE end_time BETWEEN  @lowest AND @highest";
    
    cmd.Parameters.AddWithValue("lowest", dt1);
    
    cmd.Parameters.AddWithValue("highest", dt2);
    
    

    Das Ziel des Ganzen ist es ja, auf die Datentyp Umwandlung nach Möglichkeit zu verzichten.

    Nimm dir die Zeit, und versuche nachzuvollziehen, was dort passiert. Das hilft dir, wenn du zukünftig auf ein ähnliches Problem triffst.

  5. Aber datetime hat doch das Format 2011-01-02.

    Das Format ist regionsabhängig. Bsp.:

    
    CultureInfo ci = CultureInfo.GetCultureInfo("fr-FR");
    
    Console.WriteLine(DateTime.Now.ToString(ci));
    
    // Ausgabe: 27/01/2012 07:11:46
    
    
    Je nach dem an welchem Rechner gearbeitet wird, kann der String anders aussehen. Deswegen sollte man nach Möglichkeit mit DateTime Objekten arbeiten.
    Alternativ wenn Type datetime - auch noch mit Uhrzeit 2011-01-02 00:00:00
    Da die Spalte in der DB auch vom Typ DateTime ist, sollte ein Mapping kein problem sein.
    Und @Gooose: Das ist zwar schön und gut, trägt aber nucht zur Lösung des Problems bei
    Die Vergleiche in der Query sind alphanumerisch. Dies kann dazu führen, das falsche oder keine Ergebnisse zurückgegeben werden. Wenn man keinen Einfluss mehr auf die Eingabeparameter DT1 und DT2 hätte, kann folgendes funktionieren.
    
    SELECT * FROM [AdventureWorks].[HumanResources].[Employee]
    
    WHERE HireDate BETWEEN CAST('2000-01-01' AS DATETIME) 
    
    AND CAST('2002-01-01' AS DATETIME)
    
    

    Hierbei müsste man sich aber wiederum auf die Ländereinstellungen des DBMS verlassen. Bei dieser Darstellung sind im angloamerikanischen Raum gerne mal Tag und Monat vertauscht. Das sind später Fehler, die schwer zu finden sind.

    Die Verwendung von DateTime Objekten nimmt dir diese Arbeit ab.

    Bei floating-points ist das Problem übrigens ähnlich, wenn man mit Strings arbeitet. Auch die String Repräsentation von Zahlen sind länderabhängig. (Dezimal- / Tausendertrenner)

  6. Ich würde eher mit Parametern arbeiten. SqlParameterCollection.AddWithValue bietet dir eine Übersicht. Hier mal ein Beispiel unter der Verwendung der Adventureworks-Datenbank:

    
    SqlCommand cmd = new SqlCommand("select * from [AdventureWorks].[HumanResources].[Employee] WHERE HireDate BETWEEN @lowest AND @highest",conn);
    
    
    cmd.Parameters.AddWithValue("lowest", new DateTime(2000, 1, 1));
    
    cmd.Parameters.AddWithValue("highest", new DateTime(2002, 1, 1));
    
    
    

    Die String-Verkettung fällt weg, und die Lösung ist weniger fehleranfällig.

  7. Schau dir mal die Datumsfunktionen deines DBMS an. Für MSSQL gibt es unter anderem die DATEPART Funktion. Bsp. für KW des aktuellen Datums:

    SELECT DATEPART(wk, GETDATE())

    Ein Artikel bei StackOverflow geht in die Richtung.

    Google - Suche nach "sql get dates from week number" bringt dich sicherlich auf die Richtige Fährte.

  8. Hier und da mal eine Prüfung ist sicherlich ok.

    Ich wurde letztes Jahr zusammen mit einer Kollegin auf eine Schulung geschickt. Wir sollten uns mit dem SQL Server Analysis Service vertraut machen. Drei Tage "Druckbetankung". Die Transferleistung auf konkrete Projekte musste aber immer noch gestemmt werden. Die Schulung hat die Sache vielleicht ein wenig beschleunigt, doch das eigentliche Lernen begann beim ersten Projekt.

    Die Schulung war richtig gut, wäre aber nicht zwingend notwendig gewesen.

    Wenn ich mich an neue Themen heranwage, besorge ich mir Literatur. Es gibt mittlerweile so viele Online Quellen, die man abarbeiten kann, dass einem eher die Zeit fehlt sich alles im Detail anzueignen.

    Interessant werden Zertifikate/Schulungen, wenn sie als "Türöffner" dienen. Gute Entwickler/Administratoren hat es aber schon gegeben, bevor die Firmen damit angefangen haben eine neue Einnahmequelle zu erschließen.

    Eine Fachkraft zeichnet sich nicht zwangsweise durch Zertifikate aus.

    Wenn ich einem Kollegen etwas über den Analysis Service erzählen müsste, sind die gesammelten Projekterfahrungen "wertvoller" als die Informationen bzw. der Nachweis, dass ich an dieser 3-Tages-Schulung teilgenommen habe.

    Es ist eher die Frage, wie man seinem Gegenüber glaubhaft vermitteln kann, dass man sich in einem bestimmten Bereich gut auskennt.

  9. Wollte nur mal die grundlegenden Unterschiede der Verbindungen sehen.

    Im Prinzip läuft es bei jeder DB-Abfrage ähnlich hab. Man benötigt jeweils den notwendigen Data Provider / Connector für die jeweilige Datenbank.

    Ausserdem würde mich mal interessieren, ob man LINQ auch auf MySql anwenden kann.

    Eine Google Suche nach "mysql linq" liefert schon einige Treffer. Unter anderem Tutorial: Databinding in ASP.NET using LINQ on Entities direkt aus der MySQL Dokumentation.

    Den Connector von MySql kenne ich schon. Meine, gelesen zu haben, dass er nicht auf den Express- Editionen verwendet werden kann und ausserdem steht er nicht für die 64-Bit Versionen von Windows 7 zum download bereit.

    In der Doku heißt es:

    MySQL Connector/Net supports full versions of Visual Studio 2005, 2008, and 2010, although certain features are only available in Visual Studio 2010 when using MySQL Connector/Net version 6.3.2 and later. Note that MySQL Connector/Net does not currently support Express versions of Microsoft products, including Microsoft Visual Web Developer.

    Du könntest versuchen, die Assemblies per Hand einzubinden. Der Data-Explorer wird hier wahrscheinlich nicht funktionieren. Wie man dies macht, kannst du bei diversen Online-Quellen nachlesen.

    An dieser Stelle ist ein wenig Eigeninitiative gefragt. "Online-Shop mit ASP.NET" ist zunächst erst mal ein ambitioniertes Projekt. Ich würde mich zunächst mit den einzelnen Komponenten vertraut machen, bevor ich mich an so etwas heranwage.

    Grundlegende Voraussetzung ist auch eine eigenständige Informationsbeschaffung. Damit man weiß, wonach man suchen muss, sind Kenntnisse der Grundlagen unabdingbar.

    Im oberen Bereich des .NET Bereichs findest du eine Linkliste für Openbooks und Tutorials

    Zerlege deine Probleme in Teilprobleme, dann sind die Fragen die sich aufstellen übersichtlicher und man kann einfacher nach Antworten suchen.

    Wenn du Beispielsweise das Suchergebnis nach "Web Developer Express Mysql-connector" nicht interpretieren kannst, fehlen hier noch Grundlagen. Kein Forum wird dir das eigenständige Erarbeiten von Grundlagen abnehmen können.

    Der Vorteil ist, das sich bei soliden Grundlagenkenntnissen einige Fragen von selbst beantworten lassen. Auf dem Weg zum "Online-Shop mit ASP.NET" werden sicherlich noch andere Fragestellungen relevant werden, z.B. das Thema Sicherheit, welche sich durchaus innerhalb von einem Forum diskutieren lassen (bzw. schon etliche Male diskutiert wurden, und wonach man dann suchen kann ;) ).

    Fazit: Gehe dein Problem Schritt für Schritt an.

  10. Wie sollte ich vorgehen??

    Zunächst solltest du dir überlegen, was du genau willst. Ist das erst mal nur eine Testanwendung? Wenn nicht, wie viele Benutzer sollen mit deiner Anwendung arbeiten? Liegen Datenbank Server und Web Server auf einer Maschine?... sprich, die Anforderungen sollten zumindest grob stehen.

    Anforderungen können auch ohne technischen Bezug erhoben werden. Welche Technik die Beste für eine Lösung ist, wird dann später ermittelt.

    Wenn man sich auf Grund der Anforderung für eine Technik entschieden hat, sollte man sich mit den einzelnen Komponenten auseinander setzen.

    In deinem Falle MySQL, IIS, ASP.NET und deren Zusammenspiel untereinander.

    Dies ist erst mal viel Arbeit, lohnt sich aber langfristig. Überlege dir, wie die Kommunikation zwischen Client und WebServer stattfindet. Frage dich, wie der Datenbankserver mit dem Webserver kommuniziert.

    Könnte mir jemand dabei helfen, die Verbindung zu MySql herzustellen, habe nämlich

    keine Option über Datenbank-Explorer->Datenquelle auswählen, außer MSAccess und natürlich MSSQL-Server und MSSQL Server Express, Oracle und ODBC.

    MySQL bietet einen Connector an, mit dem man auf die Datenbank zugreifen kann. In der Dokumentation kannst du nachlesen wie du ihn installierst und verwenden kannst.

    Die Visual Studio Helferlein sind nützlich. Probiere es am Anfang mal "zu Fuß" eine Verbindung herzustellen. Die dazu benötigten Klassen werden hier beschrieben. Du kannst dir eigene Datenklassen erstellen, oder für den Anfang mit DataTables arbeiten.

    Häufig ist das Zusammenspiel der einzelnen Komponenten eher komplex als kompliziert. Ich würde an deiner Stelle zunächst in einer Konsolen-Anwendung auf die Datenbank zugreifen, oder mit dem WebDeveloper eine Seite erstellen und "Dummy-Objekte" darstellen. Später kannst du immer noch alles zusammen bringen. So verliert man am Anfang nicht so schnell den Überblick.

  11. Lies dich einfach mal in das Thema Serialisierung ein:

    Serialisierung

    XML Schema Definition-Tool (Xsd.exe)

    Letzteres ist nützlich, wenn du schon eine Xml Datei hast. Generiere aus der Datei das Schema, passe es gegebenenfalls an, und aus dem Schema kannst du dann Klassen generieren. Für übersichtliche Datenstrukturen ist das Tool ganz hilfreich.

    Du kannst ein XML Dokument auch einlesen und mit XPath Abfragen erstellen. Auch bei SelfHTML findest du den XPath-Syntax.

    Es gibt genügend Quellen im Web, wo du dir Informationen holen kannst. Das Visual Studio bietet eine Menge kleine Helferlein. Doch nicht jedes ist unbedingt nützlich oder passen zu jedem Problem.

    Setze dich mit Zettel und Stift hin und überlege dir, wie du dein Problem lösen kannst. DataSet-Lösungen sind bequem, können aber auch sehr komplex werden. Manchmal ist es "zu Fuß" einfacher als man denkt.

  12. Du könnstest das onSubmit Event des Form Tags nutzen

    <form method="post" action="xxx.htm" onsubmit="return IsConfirmed();")>
    JavaScript:
    
    function IsConfirmed {
    
        var message = "Sicher, dass du die Seite verlassen möchtest?";
    
        return confirm(message));
    
    }
    
    
    oder kurz
    <form method="post" action="xxx.htm" onsubmit="return confirm('Sicher, dass du die Seite verlassen möchtest?');")>
    confirm liefert schon true oder false zurück. Bei solchen Fragestellungen, wirf ein blick in die Dokumentation, oder baue dir ein minimales Beispielprojekt
    
    <html>
    
    <head>
    
    	<title>Confirm Test</title>
    
    </head>
    
    <body>
    
    	<form method="post" action="xxx.htm" onsubmit="return confirm('Yes?');")>
    
    		<input type="submit" name="Name" value="Beschriftung">
    
    	</form>
    
    </body>
    
    </html>
    
    

    So etwas reicht zum testen schon aus.

  13. Warum eine Prozedur? Wenn Du protokollieren willst, wann sich der Datensatz zuletzt geändert hat würde man bei einem On-Update bzw On-Create das Feld direkt via Trigger setzen

    ...

    Es handelt sich um eine SQL-SErver 2008 R2 Datenbank

    Ab dem Sql Server 2008 gibt es die Möglichkeit mittels Change data capture Änderungen an Daten nachzuverfolgen.

    Möglicherweise findest du in dem Bereich eine Lösung zu deinem Problem.

    Der Trigger wird auch funktionieren.

    Die mögliche Lösung ist abhängig von den Anforderungen die du hast/bekommen hast.

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...