Laden...

Forenbeiträge von rezico Ingesamt 11 Beiträge

24.04.2012 - 10:45 Uhr

Hallo,
warum ich nicht sowas verwendet habe, kann ich dir relativ einfach beantworten. Ich wusste gar nicht dass es so etwas gibt 😃

Nichts desto trotz ist das Programm fertig. Es funktioniert alles einwandfrei und deshalb möchte ich höchstens noch Optimierungen durchführen und nicht komplett von vorne anfangen.

Warum Multiplattform? Dachte das wäre die beste Lösung, ich bleibe jetzt aber bei dem herkömmlichen SqlCommand.

Warum von mySql auf Mssql? Nein die Anforderung war nicht, dass es auf dem Server laufen sollte, ganz im Gegenteil. Es war gewünscht dass die DB im Netz steht (wir hatten damals noch einen Webserver im Haus, jetzt nicht mehr). Da mir damals MySql viel einfacher gefallen ist als Mssql (hatte damit noch überhaupt keine Erfahrungen) habe ich es auch auf mysql entwickelt.

Da meine Chefs aber keinen Plan von dem Unterschied haben, muss ich das Programm jetzt eben umfriemeln, da komm ich nicht drum herum.

Also next Step: Alle Abfragen umdeixeln und parametisieren. Gibt es irgendwo ein Snippet, in dem vielleicht gezeigt wird, wie ich das ganze über eine Funktion bauen kann, wodurch ich über Übergabeparameter die SQL Parameter einfach erweitere? Sodass ich nicht jede einzeln umschreiben muss sondern quasi eine Funktion habe die das für mich erledigt.

Vielen Dank! Habt mir schon sehr weitergeholfen.

23.04.2012 - 16:55 Uhr

Die Software SQL Server 2005 ist auf unserem Server schon installiert und wird benötigt, da wir darüber unsere ERP Software laufen haben (und da muss eben meine DB drauf).

Das ist eben das Problem 😃

23.04.2012 - 16:41 Uhr

Hallo,
vielen Dank für Eure Antworten.
Eins vorweg: Ja ich habe sehr wenig Grundlagenwissen, normalerweise bin ich ein Webheini, und da bin ich eher in der Extensionentwicklung für ein CMS zuständig. Aber das ist auch nur der Fall, wenn eine benötigt wird.

Ich habe also die Aufgabe bekommen, das Programm für die Firma zu entwickeln und hab mehr oder weniger drauf los getippselt (natürlich mit einem Ziel und Struktur, d. h. ich wusste wie es am Ende aussehen sollte) und mit einer mySQL Datenbank hat es funktioniert.
Als dann aber neuerdings die Anforderung kam, dass auf dem internen Server zu installieren, hatte ich meine erste Schwierigkeiten (siehe Post ^^) und wusste nicht direkt wohin. Im Grunde ist das hier mein erstes richtiges Programm und ich habe auch um ehrlich zu sein gar keine Zeit mich durch dutzende Wälzer über C# zu schlagen, wenn mein Hauptgebiet doch wo anders liegt.

Mittlererweile hat die Applikation ca. 4800 Zeilen Code (vermutlich kann man sich die Hälfte davon sparen 👍) und muss nichts desto trotz natürlich jetzt an die neuen Anforderungen angepasst werden.

Ich habe nun das ganze auf DbConnect umgedeixelt (und ja, mittlererweile weiß ich, dass sich die Statements unter den verschiedenen DB-Systemen unterscheiden) und würde das ganze jetzt 1. parametisieren und 2. versuchen so gut wie möglich eine All-Aroundlösung für verschiedene Systeme zu gestalten.

Dazu habe ich jetzt sämtliche Inserts & Updates in eine Funktion geschmissen, dort will ich dann das Query auseinanderpflücken und für die verschiedenen Systeme anpassen. Das gleiche will ich natürlich mit allen Selects, Deletes, usw. auch machen.

Doch zu allererst würde ich gerne wissen WODURCH sich die verschiedenen Querys unterscheiden, denn ich bekomme nach wie vor die Fehlermeldung mit den Spaltennamen und außerdem würde mich noch inetressieren, wie dein Beispielcode für dbConnection und nicht für SqlConnection aussieht (letzter Post, evtl. kann mir da nochmal jemand etwas auf die Sprünge helfen)

Wegen Performance: Natürlich habe ich nach jeder Abfrage die Verbindung geschlossen und im allgemeinen auch darauf geachtet so performancearm wie möglich zu arbeiten aber da es natürlich mein 1. größeres Projekt ist, kann ich auch nicht zaubern 🙂

Ach so: Es handelt sich um eine Zeiterfassung, falls es noch jemanden interessieren sollte, aber das sollte eher zweitrangig sein.

Ich danke wie immer für eure Hilfe. Es ist immer wieder schön zu sehen, dass es noch hilfsbereite Menschen gibt 🙂 Danke!

23.04.2012 - 14:33 Uhr

Das wars, stimmt.
Das heißt da kommen jetzt ein Arsch voll Arbeit auf mich zu... Supi.

Ich hab dazu jetzt nochmal ein paar Fragen...
*Gibt es eine Möglichkeit diese 2 Verbindungsmethoden zu kombinieren? *Ich habe es jetzt soweit umgeschraubt und bekomme eine Verbindung. Allerdings funktionieren jetzt eigentlich keine meiner Abfragen mehr. (Kleine info am Rande, Parameter sind hier ausnahmsweise nicht notwendig, da der User eigentlich keine Eingaben tätigen muss, sondern alles automatisiert abläuft - Das Programm ist im Grunde auch schon fertig, war aber vorher eben auf MySQL ausgelegt) - Ich bekomme immer die Fehlermeldung "Ungültiger Spaltenname XYZ". Hab jetzt auch schon ne Weile gegoogelt, und mir wird gesagt, dass es an den Hochkommas liegt. Hab jetzt schon alle möglichen Kombinationen probiert, es hilft aber alles nichts.

Hier mal Beispielcode (nach dem Login wird der Vorname des eingeloggten User ermittelt):

               
SqlCommand command2 = connection.CreateCommand();
                command2.CommandText = "SELECT vorname FROM mitarbeiter WHERE maid = '" + maid + "'";
                SqlDataReader Reader2;
                Reader2 = command2.ExecuteReader();

                while (Reader2.Read())
                {
                    mavorname = Reader2[0].ToString();
                }
                Reader2.Close();

Wie ist da die richtige Syntax? Und kann ich irgendwie verhindern, dass ich das nun überall ändern muss? Vielen Dank....

23.04.2012 - 13:02 Uhr

Das hatte ich auch schon versucht, war mir letztendlich dann zu viel Code für die kleine Zeile 😃 Hat schließlich auch damit ohne Probleme funktioniert.
Habe gerade auch herausgefunden, dass ich auch mit HeidiSQL nicht auf den Server komme.
Woran kann das liegen? Mit dem Server Explorer komme ich ja auch einfach drauf?!

Steh gerade echt auf dem Schlauch.

Danke!

23.04.2012 - 12:37 Uhr

Hiho,
und zwar habe ich auf einem Server SQL Studio 2005 installiert. Dort ist eine DB angelegt, auf die ich gerne über mein Programm zugreifen würde.

Ich habe bereits alle Ports freigeschalten und das merkwürdige: Über den Server-Explorer im Visual Studio komme ich auch auf den Server, d. h. die Verbindung schlägt nicht fehl.

Ich habe eine Loginmaske gebaut, in der der User Server, User, PW und DB eingeben muss. Danach wird dadurch der ConnectionString gebaut. Das hat in der Regel auch funktioniert (hatte vorher beispielsweise eine lokale Xampp-Installation laufen -> Funktioniert, oder auch schon eine Online-DB bei All-inkl.de - hat alles funktioniert.

Der Connectionstring wird folgendermaßen zusammengesetzt:

connection = new MySqlConnection(@"Data Source=" + dbhost + ";User Id=" + dbname + ";Password=" + dbpassword + ";Initial Catalog=" + dbdb + ";");

Ich bekomme immer die Fehlermeldung: "Unable To Connect to one of the specified Hosts" - ich kanns mir mittlererweile nicht mehr erklären. Hat vielleicht einer eine Idee? Fehlt mir ein Port, mache ich irgendwas falsch?

Vielen Dank für eure Hilfe!

20.06.2011 - 23:02 Uhr

Danke,
ja ich kann dir folgen 😉

Allerdings werd ich dann noch immer nicht schlau daraus, was ich damit anfangen kann.

Bin tatsächlich noch ein Anfänger, aber was bringt mir das dann letztendlich?

Danke!

20.06.2011 - 22:22 Uhr

OKay, dann muss ich passen 😃

Ich habe doch bereits geschrieben dass er in das Textfeld schlussendlich Binary.Array bzw. Array.Binary einträgt, das ist doch der Dateityp?

DAs alles bringt mir dann immernoch nichts, zumindest mir nicht.

20.06.2011 - 21:44 Uhr

Hey.
Danke erst einmal für die Antworten.

Im Grunde läuft nichts schief, er gibt mir alles problemlos aus, keine Warnungen, keine Fehlermeldungen - alles läuft einwandfrei.

Wie gesagt in HeidiSQL gibt er mir die Tabelle auch problemlos aus, die "Zeiten" werden alle in Pausestart / Pauseende angezeigt, jedoch mit richtiger Tätigkeit, also dachte ich mir ich binde das ganze einfach in ein Grid ein und ändere die Spaltennamen, dann stimmt es.

Binde ich das ganze dann schullendlich ein, wandelt er die Felder wie gesagt in Bildfelder ein, ändere ich den Feldtyp in ein Textfeld gibt er mir aus das es ein Binäres Array ist (hab den genauen Wortlaut gerade nicht im Kopf aber sowas wie Binary.Array)

Ich wollte dafür eigentlich jetzt keine Klasse bauen, ich dachte das funktioniert auch irgendwie mit einer "einfachen" Sql Abfrage, was ja eigentlich auch funktioniert, nur eben nicht im Programm selbst.

Evtl. hat ja noch jemand einen anderen Vorschlag, vielleicht eine anderen Abfrage?

Im Endefekt wird in einer großen Tabelle "Zeiten" alle IDs von den Tätigkeiten gespeichert.

D. h. die Tabelle Zeiten hat Fremdschlüssel wie eben hier erwähnt FK_Arbeitszeitenid, FK_Pausenzeitenid etc.

Ich möchte im Grunde nur das er mir anhand der ID die Zeiten ausgibt, einzeln funktioniert das natürlich wunderbar, im Zusammenhang mit UNION nur in phpmyadmin bzw. heidisql selbst, sobald ich das ganze in dein Grid fügen möchte, macht er faxen.

Bin wie gesagt um jeden Vorschlag dankbar, falls es wirklich nicht anders gehen sollte, überdenke ich nochmals meine Datenbankstruktur oder erstelle eben eine Klasse, wobei ich den Schritt eigentlich nicht unbedingt für notwendig empfinde!

Danke!

20.06.2011 - 17:14 Uhr

verwendetes Datenbanksystem: MySQL 5

Hiho,
folgendes Problem:
Ich würde gerne in einem Grid mehrere Inhalte aus mehreren Tabellen ausgeben.

In dieser Abfrage befinden sich insgesamt 4 Abfragen, in jeder Abfrage hat eine Tabelle eine Beziehung zur anderen, die Selects untereinander aber eigentlich nicht, die Quelltabelle ist immer anders, die Zieltabelle ist immer die selbe.

Hier meine Abfrage:

SELECT  az.arbeitstart, az.arbeitende, z.tätigkeit, z.differenz, z.pk_zeitenid
FROM arbeitszeiten as az, zeiten as z
WHERE z.fk_arbeitszeitenid = az.pk_arbeitszeitenid AND az.fk_mitarbeiterid = 1
UNION 
SELECT  fz.zeitraumstart, fz.zeitraumende, z.tätigkeit, z.differenz, z.pk_zeitenid
FROM freistellungszeitraeume as fz, zeiten as z
WHERE z.fk_zeitraumid = fz.pk_zeitraumid AND fz.pk_zeitraumid = 1
UNION 
SELECT  ut.urlaubstart, ut.urlaubende, z.tätigkeit, z.differenz, z.pk_zeitenid
FROM urlaubstage as ut, zeiten as z
WHERE z.fk_urlaubsid = ut.pk_urlaubstagid AND ut.fk_mitarbeiterid = 1
UNION
SELECT  pz.pausestart, pz.pauseende, z.tätigkeit, z.differenz, z.pk_zeitenid
FROM pausenzeiten as pz, zeiten as z
WHERE z.fk_pausenid = pz.pk_pausenid AND pz.fk_mitarbeiterid = 1
ORDER BY pk_zeitenid desc

Das ganze funktioniert auch soweit, bis ich es dann in ein Grid einbinden möchte, dann nämlich macht er mir aus den Spalten arbeitstart und arbeitende einen Binären Wert, ich schätze ein Array und das kann er mir dann in der Tabelle nicht anzeigen, als Feldtyp liegt er von selbst eine Bildspalte fest.

Komischerweise gibt er es mir im HeidiSQL problemlos aus.

Wie kriege ich es nun hin, dass er mir in 2 Spalten jeweils den BEGINN und das ENDE eines Vorgangs ausgibt? Tätigkeit und Differenz wird problemlos ausgegeben, es geht hier wie gesagt nur um Start und Ende.

Bin hier für jede Hilfestellung dankbar, hänge da jetzt schon eine Weile und langsam nervt es 😃

15.06.2011 - 11:23 Uhr

Hallöchen,
zugegebenermaßen bin ich noch ein Anfänger, leider hänge ich gerade und komme selbst nach ewigen Suchorgien nicht mehr weiter.

Ich bastle gerade an einer Art Zeiterfassung und ich würde gerne nachdem ich dem Button "Start" geklickt habe, dass sich die Tabelle aktualisiert und neu aus der MySQL Tabelle ausgelesen wird.

Ich habe an das DataGridView eine BindingSource gehängt, nun stellt sich die Frage, wie aktualisiere ich das ganze?

Zu der BindingSource wurde auch noch ein tableAdapter angelegt, außerdem habe ich hier ein DataSet.

Was muss ich nun tun, damit ich (verdammt nochmal) die Tabelle einfach nur neu einlese?
So schwer, kann das doch nicht sein oder?