-
Gesamte Inhalte
443 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
10
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Gooose
-
Sicherlich wird auch speicher allokiert, doch ich meinte hier Resourcen im allgemeinen, sprich z.b. Anzahl von offenen Verbindungen zu einer Datenbank. Listen sind grundlegende Datenstrukturen. Vielleicht solltest du dich mit den Grundlagen auch nochmal auseinandersetzen.
-
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.
-
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. Davon wird hier ausgegangen. 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. Das müsste ich auch ausprobieren Ich denke aber, das mögliche auftretende Probleme durch das Verwenden von Parametern minimiert werden. 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.
-
Hierbei ist das Datentyp-Mapping zwischen .NET und SQL-Server gemeint. Hier mal eine Übersicht: Mapping CLR Parameter Data 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. 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.
-
Hier mal ein Thread wo es um ein ähnliches Thema geht: MSSQL / SqlCE DateTime Where Global halten
-
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. Da die Spalte in der DB auch vom Typ DateTime ist, sollte ein Mapping kein problem sein. 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)
-
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.
-
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.
-
Fachkräftemangel - Gründe und Auswege
Gooose antwortete auf geloescht_nibor's Thema in IT-Arbeitswelt
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. -
Fachkräftemangel - Gründe und Auswege
Gooose antwortete auf geloescht_nibor's Thema in IT-Arbeitswelt
mal wieder was Aktuelles aus der Presse: Spezialistenmangel hausgemacht? -
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. 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. In der Doku heißt es: 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.
-
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. 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.
-
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.
-
Schau dir mal How can I override the OnBeforeUnload dialog and replace it with my own? an. Vielleicht kommst du in der Richtung weiter.
-
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.
-
Aktuelles Datum und Uhrzeit in einer Gespeicherten Prozedur einbauen?
Gooose antwortete auf T-Back's Thema in Datenbanken
Trigger sind ja auch prädestiniert dafür. In Abhängigkeit des DBMS und des Problems was zu lösen ist, gibt es halt mehrere Möglichkeiten. Wir evaluieren gerade Möglichkeiten, wie wir Systemweit "Telemetriedaten" sammeln können. Deswegen viel mir der CDC wieder ein -
Aktuelles Datum und Uhrzeit in einer Gespeicherten Prozedur einbauen?
Gooose antwortete auf T-Back's Thema in Datenbanken
... 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. -
Aktuelles Datum und Uhrzeit in einer Gespeicherten Prozedur einbauen?
Gooose antwortete auf T-Back's Thema in Datenbanken
Geh mal ins Management Studio und schau dir an, was SELECT GetDate() ausgibt. Das könnte dir eine Idee vermitteln in welche Richtung es gehen könnte. Google-Suche "t-sql getdate" -> erster Treffer -> GETDATE (Transact-SQL) Auch danach kann man suchen -
Nur mal so als Beispiel: Sample Reports - Customer Reports wo die Reise hingehen könnte. Hierbei wird der Analysis Sevice des SQL Servers genutzt. Dies ist eine mehr oder weniger aufwendige Lösung.
-
Anhand deines Code-Schnipsels gehe ich von MySql aus. Die Dokumentation besagt das Now() einen Zeitstempel zurück gibt. D.h. Die Zeitkomponente ist mit dabei. Das ein Datensatz auf die Millisekunde genau in der Tabelle vorhanden ist, ist eher unwahrscheinlich. Probiere das einfach mal direkt auf der DB-Konsole aus: SELECT Now(); CURDATE() sollte das gewünschte Ergebnis liefern. Generell: MySQL ist für die meisten Aufgaben gut dokumentiert. Teste deine Abfragen nach Möglichkeit auf einer DB. In diesem Fall hätte dich ein SELECT NOW(); auf die richtige Fährte bringen können.
-
Je nach Server gibt es integrierte Datumsfunktionen. Beispielsweise für den MSSql Server: Date and Time Functions (Transact-SQL). Dort findest du auch eine Funktion, die du bei der Lösung deines Problems verwenden kannst. Die Funktionen sind DBMS abhängig. Generell: Du willst die Ergebnismenge auf die Datensätze einschränken, die in einem bestimmten Zeitraum liegen. => WHERE-Klausel in der SELECT-Anweisung für die Datumsspalte dementsprechend formulieren. Wenn du hierbei noch Schwierigkeiten hast, besorge dir eine Test-Datenbank, oder baue dir eine, womit du üben/testen kannst.
-
Stellangebote und ihre Formulierungen ****en mich an...
Gooose antwortete auf achwasweissdennich's Thema in Jobsuche, Bewerbung und Zeugnisse
Das hat sicherlich seine Vor- und Nachteile. Mal angenommen, eine Stelle wird ausgeschrieben. Der Arbeitgeber plant gemessen an den zu erwartenen Aufgaben/Fähigkeiten die 40-45k ein. Stark vereinfacht: Fall 1: keine Angabe / eigene Einschätzung gebeten Es bewerben sich ca. 300 Leute auf diese Stelle. x Fallen raus, weil sie aus dem Rahmen fallen. y kommen in die engere Auswahl, z werden eingeladen. Wenn jetzt jemand mit 55k ins Rennen gegangen ist, und dieser auf 45 runtergehandelt wurde, könnte er nach ein paar Jahren unzufrieden sein und das Unternehmen wieder verlassen (wenn keine Aufstiegschancen vorhanden). Jemand der mit 32k ins Rennen gegangen ist, könnte mit der Stelle übervordert sein, wobei viele dazu tendieren sich unter Wert zu "verkaufen". Die Entscheidung liegt hier beim Unternehmen. Fall 2: mit Angabe: Es bewerben sich ca. 200 Leute. Die extremen "Abweichler" bewerben sich nicht. Jetzt wird es aber interessant. Die Einen hätten sich für 32k verkauft glauben aber von sich dass sie den Job erledigen können, die Anderen hat vielleicht die Aufgabe gereizt und senken vorab Ihre Vorderungen um im Rahmen zu bleiben. Das Problem für den Arbeitgeber ist jetzt diese erkennen. Klar, es gibt Probezeit, wo man erkennen kann, wie sich der Wunschkandiat macht, doch wenn man immer mal wieder "daneben" liegt, kann es für den Arbeitgeber auf Dauer teuer werden. Wie gesagt, es ist stark vereinfacht, und sicherlich nur ein Teilaspekt bei der Überlegung Gehaltsangabe ja oder nein. Wenn auf Grund von sehr allgemeingehaltenen Anforderungen unklarheiten bestehen, kann man immer noch zum Telefon greifen, um sich genauer zu erkundigen, (je nach HR-Prozess gewünscht oder ungewünscht) um seine Angabe zu präzisieren. -
Mit Hilfe von XmlNode.SelectNodes kannst du deine Elemente auswählen. Die XPath-Beispiele können dir bei der Adressierung helfen.
-
Wenn du das Datum an die Datenbank übergibst sollte via SqlParameterCollection.AddWithValue der Typ passend umgewandelt werden. Du kannst ja spaßeshalber mal schauen, wie das Ergebnis im Profiler aussieht. An Sonsten schau dir mal Standard Date and Time Format Strings in der MSDN an.
-
Fachkräftemangel - Gründe und Auswege
Gooose antwortete auf geloescht_nibor's Thema in IT-Arbeitswelt
Die Hochschulen haben in erster Linie einen wissenschaftlichen Auftrag. Als Student hat man die Möglichkeit wirtschaftliche Schwerpunkte zu setzten. Je nach Hochschule hat man einen mehr oder weniger großen Praxisbezug. (Uni/FH) Im Idealfall wird man in die Unternehmensprozesse mit eingebunden. Allein dadurch ensteht ein wirtschaftlicher Bezug. Wenn ein Unternehmen dies nicht wahrnimmt, hat es selber schuld, oder hat an der Ausbildung an sich kein Interesse. Ich kann mir kaum vorstellen das ein ITler ohne wirtschaftlichen Bezug arbeiten kann. Bei jeder Entscheidung, die er trifft muss er sich fragen, ob sich die gewählte Herangehensweise rentiert. In diese Frage spielt häufig mehr rein, als die reine Arbeitskraft. Wie tief muss dieses Wissen jetzt sein? Dies hängt sicherlich von der Position ab. Bei Jobs mit Personal- und/oder Budgedverantwortung ist betriebswirtschaftliches Wissen sicherlich notwendig. Wenn man nur "seine Umgebung wahrnehmen muss", und in erster Linie technische Aufgaben erfüllt, ist dieses Wissen sicherlich nicht so wichtig. Ich denke, das Firmen "Mangel" unterschiedlich definieren. Wer als Unternehmen genauer sucht, wird eher seine Fachkraft finden. Wer eine bestimmte Fähigkeit sucht, sollte auch wissen, was diese Wert ist.