Das stichwort ist wohl eher BULK INSERT
Nutzt du Visual Studio 2005 auf nem Vista system? Dann probiers mit Admin rechten
Im Connectionstring steht nur die Instanz des SQL Servers, es fehlt der HOST. das . in .\SQLEXPRESS sagt aus, dass sich die Instanz auf dem Lokalen ( ausführenden ) Rechner befindet. Schreibe den Rechnernamen anstatt des . in den Connection string und schon gehts auch im Intranet
In Visual Studio 2008 kannst du eigendlich alle MS SQL Produkte einbinden, also Compact, SQL Server Express, oder die großen Brüder.
Allerdings würde ich dich darum bitten aussagen wie "acces soll einfach einzubinden sein. jedoch ist dieses nicht stabil." zu lassen, Access ist zum einen keine vollwertige Datenbank, zum anderen aber: Access ist durchaus stabil und wird in vielen Szenarien angewandt und das erfolgreich. Persönliche Abneigung gegen ein (die anführungszeichen sind explizit gesetzt!) "Datenbank System", sollte dich nicht dazu bewegen, unquallifizierte und pauschalisierte Aussagen zu treffen.
Quick and Dirty: Alle Daten einer Tabelle aus dem Remote laden, checken ob der Identifier auch lokal schon liegt, wenn ja, daten vergleichen, wenn nicht anlegen. Dabei führst du buch über alle ID`s die du verglichen hast und am ende gehst du hin und löscht alle übrigen Zeilen mit den ID´s die nicht im Lokal system vorkommen.
Das machste für jede tabelle. Ich bin sicher auch in Oracle bekommst du aus dem Schema heraus, welche Tabellen es gibt.
Nachteil verbraucht viel Speicher
Wenn das nix is müssen wir uns was anderes überlegen.
Würde Jack spontan recht geben,
wenn es so ist, dann musst du dich erst inpersonieren so weit ich weiß.
Du schaust am besten mal nach unter welchem account du ausführst: WindowsIdentity.GetCurrent().Name
Nein sehe ich nicht anders, in dem fall mag es gepasst haben. Aber den Ansatz zu pauschalisieren wäre ein Fehler. Solche Konstrukte brauchst man nur in spezialfällen. Wie dem auch sei, er hat einige Lösungsansätze, ich rate hier explizit davon ab irgendwelche Konstrukte aufzubauen mit in denen neben DB Server und Client noch irgendwelche anderen aktiven Server eingeführt werden. Ich rate dazu den ADO weg zu gehen, von mir aus mit nem ORM der locken und transaktionen kann und ein ernstes gespräch mit dem Kunden zu führen. Software ist kein Allheilmittel!
Also ich als User würde laut scheiße schreien bei so nem system. Folgendes Szenario:
Sachbearbeiter 1: Öffnet Datensatz, ändert, stellt fest es fehlt ihm eine Info
Sachbearbeiter 2: Öffnet Datensatz, ändert, ignoriert den fakt das ihm was fehlt, speichert
Sachbearbeiter 1: Hat die info, zurück in der software sieht er, jmd anders hat geändert, aber er sieht ja die Daten noch nicht, würde auch keinen Sinn machen, da er ja schon selbst was geändert hat, Bricht ab.
Sachbearbeiter 1: 2 Wochen später sieht er, SB2 hat müll eingetippt. Er ändert wieder.
Besser:
Sachbearbeiter 1: Öffnet Datensatz, ändert, stellt fest es fehlt ihm eine Info
Sachbearbeiter 2: Öffnet Datensatz, stellt fest, SB1 bearbeitet, Satz is readonly
Sachbearbeiter 1: Hat die info, zurück in der software, tippt er ein, speichert, alle glücklich
Als Anwender UND als Chef würde ich variante 2 bevorzugen, für den Anwender weniger Frust, für den Chef weniger Kosten
Das Packages vergleichbar mit assemblies sind? Nun, es hat keiner Geschrieben, "Schau her lieber Java Entwickler, weil du Packages hast, bekommst du in C# Assemblies", also es wird niemand drüber nachgedacht haben. Aber im nachhinein ist es von Microsoft so angedacht worden. Hab das zum einen in Framework Design handbüchern und in der MSDN gelesen
Hallo diamond,
ich sehe immernoch das gleiche Problem. Bitte gib mir doch eine Aussage. Befindet sich das Datenbank Design in der höchsten Normalform? Wenn ja, solltest du vielleicht das Beratungs Gespräch mit dem Kunden neu ausrollen.
Ernsthafte Software Entwicklung beinhaltet niemals das Ja und Amen sagen, zu allem was der Kunde möchte. Versteh das bitte nicht als Angriff, eher als produktiven Tip:
Ablauf:
==== Software Analyst
==== Software Architekt
==== Kunde & Softwareanalyst
==== Entwickler
.
.
.
So geht es weiter. Analysten sollten sich Betriebswirtschaftlich so fit fühlen, solche Fehler zu finden, Architekten müssen ihre Tools ( u.a. auch ADO ) kennen. Entwickler verfügen über excellente Sprachkenntnisse.
Hier scheint was schief gelaufen zu sein. Ich kann dir aus meiner Erfahrung heraus garantieren, dass du in eine Sackgasse rennst und weder in der Lage bist den Kunden noch dich zufrieden zu stellen. Wenn du ne Firma hast die das für den Kunden macht, hoffe das er irgendwann abspringt, sonst landet ihr vor Gericht und das kann a ) teuer werden und b ) ungemütlich werden.
Nimm meinen Rat an, lass nur einen auf einer Row arbeiten, spreche noch einmal mit dem Kunden und schicke einen Analysten zu ihm um die Prozesse zu sichten und zu bearbeiten.
(Wenn du alle 3 Rollen übernimmtst, incl. Projektmanagement, dann lese vll vorher ein Buch über Business Workflows o.sth.l.t )
MFG Krieger
Zusatz:
Zur Normalisierung: http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
@Kaji
Der Service Ansatz ist da etwas übertrieben, das bekommt man mit ADO schon hin.
Hallo diamond,
ich habe mir alle Posts durchgelesen und irgendwie kam mir immer wieder die frage: Warum wollen die User auf dem selben Datensatz arbeiten?
Für mich stellt sich mit den sperrlichen Informationen eines der folgenden Probleme dar:
Ich würde empfehlen: Data Rows Locken, sodass 1er dran arbeiten kann, 9 haben den Satz Readonly geöffnet. Und beim Commit in die Datenbank überall die Row updaten.
Packages sind in .NET vergleichbar mit Assemblies, soll heißen, das was du früher in packages eingeteilt hast, verpackst du heute in assemblies. Das einteilen in Verzeichnisse wie oben beschrieben, dienen dazu Namespaces logisch innerhalb einer Assembly zu ordnen.
Trägt jetzt vielleicht nicht zur Lösungsfindung bei aber:
AJAX heißt: Asynchronous Javascript and XML ( oder so in der art 😉 )
Wieviel sinn macht es dann Synchronous AJAX zu verwenden? Wenn du nicht AJAX nutzt, ist jeder Call im Page Lifecycle in ASP.Net blocking. Wenn ich mich nicht irre, mein gott es ist noch zu früh 😃
xSQL Object wäre da das richtige 😉
setz das bild readonly oder so, aber metadaten wäre der richtige weg
DirectShow kannst du beibringen auf Controls zu zeichnen, du musst nur die richtige property setzen, da gibt es in DirectShow.NET ein paar gute beispiele.
Das hab ich ja schon geschrieben, dass die member aus der compiler optimierung ausgeschlossen wird 😉
Edit: Der compiler gibt nichts frei, der GC gibt frei und der wurde damit nicht angesprochen, es wird lediglich sichergestellt, dass das Feld zugewiesen ist (read != null) bevor darauf zugegriffen wird.
schau in der msdn nach der C# Singleton Beispiel implementierung, das ist einfacher als wenn ich das hier jetzt repliziere
Event. Wie der thread auf der anderen seite das von dir angesprochene Problem löst muss deiner klasse egal sein. Du würdest hier ein spezialisiertes problem lösen.
volatile stellt sicher, dass im feld immer der aktuelle wert vorhanden ist. Die felder werden nicht von Compileroptimierungen erfasst usw.. Generell gillt: Felder auf die von mehreren threads zugegriffen werden kann und die von mehreren threads geändert werden können, werden volatile gekennzeichnet.
Macht man nicht so. Habe erklärt wie man OOP anwendet. Eine klasse für den O/R Mapper, eine zum Artikel holen, eine zum Reader / Writer verwalten.
Ich rauche. Es hat sich hier in der Firma gezeigt, dass beim Rauchen das Wissen gebündelt wird und ein eigenartiger synergieeffekt ensteht 🙂 Spass bei seite, mir schmeckts einfach, glaubt es oder nicht 😜
Trinken: Nur wenn ich in irgendnen Dance schuppen geschleppt werde 🙂
Vorsicht: Die instanz des oben beschrieben singletons wird beim ersten Zugriff auf die Klasse ( egal ob eine statische methode die public ist oder nicht ) erstellt. Ich persönlich bevorzuge folgendes:
private static volatile Anmeldung _Instanz;
public static User Instanz
{
get{
lock(_Lock){
if(_Instanz == null)
_Instanz = new Anmeldung();
return _Instanz;
}
}
}
Hier wird erst wenn der User das objekt wirklich braucht das Objekt erstellt. Zusätzlich sollte der statische Instanz Member mit volatile gekennzeichnet werden.
Um es nochmal deutlich zu machen warum OOP und warum der Overheat:
Objekt Orientierung erhebt im prinzip den Anspruch darauf, Real existierende Zusammenhänge abzubilden. Irgendwie klingt das gerade komisch, aber das mag an der müdigkeit liegen. Fakt ist, dass das Klassen Design so generisch gehalten werden sollte, dass ein Objekt das abgebildet wird in jedem erdenklichen Anwendungsfall eingesetzt werden kann, nicht nur im kontext der aktuell entwickelten Applikation.
Dies führt zu dem Vorteil, dass klassen die einmal geschrieben wurden, nie wieder geschrieben werden müssen. D.h. hat du einen guten generischen CSV Parser, solltest du die klasse im idealfall in jeder deiner Applikationen wiederverwenden können ohne großartig nachdenken zu müssen, wie das Problem zu lösen ist. Im realen Leben ist das nie so ganz möglich, also entwickelte Klassen müssen meist noch erweitert werden, da man eben nicht jeden fall bedacht hat. Allerdings müssen die klassen wie gesagt nur ERWEITERT werden und nicht NEU geschrieben werden.
Für den Einsteiger wäre wichtig die Unterschiede der verschiedenen herangehensweisen zu kennen. Objekt Orientierte Programmierung ist nur eine von vielen herangehensweisen. OOP gilt z.Z. als der üblichste Ansatz, da o.g. Vorteile überwiegen. Allerdings gibt es auch Fälle in denen andere Ansätze wie Aspekt Orientierte Programmierung eingesetzt werden, ein relativ neuer Ansatz. Info Quelle hier wie immer Wikipedia, falls man sich weiter informieren möchte.
Sollte das passieren, ist darauf zu achten, dass wie in MMO`s der Server einen plausibilitätscheck der vom client übermittelten werte macht und zusätzlich muss darauf geachtet werden, dass der Client ausschließlich die Präsentationsschicht der Applikation darstellt. Berechnungen sind, ab dem Zeitpunkt in dem User Clients entwicklen dürfen, ein Nogo im Client.
kein ding, viel spass dabei 🙂
auf den ersten blick ist es vll. verschwenderisch / aufwändig / unnütz. aber auf den 2. blick siehst du, dass du folgedes machen kannst:
Weg a) eine klasse die genau das tut was du willst
Weg b) Eine Datenbank Klasse, die immer wieder für den zweck hergenommen werden kann, eine CSV Klasse deren parameter bestimmen wie das array rauskommt, also welche Felder etc, kann dann auch für den zweck immer wieder hergenommen werden etc.
Verstehst das Prinzip? Reuse code 😉
Rechtsklick auf eine freie Fläche in der Toolbox -> Choose Items -> Browse -> DLL Auswählen der Controls -> glücklich sein
Ob ankommen oder nicht ankommen kann hier mal vernachlässigt werden, UDP fällt raus. Wichtig ist, dass er mit wenig aufwand durch einsatz von .Net Technologien schnell und erfolgreich an sein Ziel kommt.
Da sag ich Webservice, ob nun der traditionelle oder WCF: egal! Nur eins: Webservice FTW!
Der Vorteil: Wenn das spiel wirklich so viele Spieler bekommen sollte kann der IIS Loadbalancing machen, das bekommt er also geschenkt. TCP ist damit auch raus.
Er empfiehlt wohl UDP, weil in der Spieleentwicklung meistens auf UDP mit eigenem Layer zurückgegriffen wird. So gibt es RakNet als Beispiel, das eine UDP Library mit Abstraktions Schicht zur Verfügung stellt, die sicherstellt, dass Pakete ankommen, in der man sicherstellen kann wie Pakete ankommen ( geordnet / ungeordnet ) usw.
Der Vorteil von UDP ist ganz klar die geschwindigkeit und der geringe Protokoll overhead in Hinsicht auf Datenvolumen und Kommunikation. Allerdings ist das in diesem fall meines Erachtens nicht nötig, da die UDP Libraries dazu eingesetzt werden große Mengen an Vektoren / Quaterniale in kurzer Zeit zwischen Server und Client zu synchronisieren um möglichst exakt synchronisierte Positionen und Richtungs Vektoren auf Client / Server seite zu haben. Da das hier wegfällt, braucht er sich den Stress nicht machen.
Wenn er sich doch dazu entscheiden sollte, gibt es einen guten UDP Layer für .NET bei Google Code. Ich kann mich nur nicht mehr so genau an den Namen erinnern. Die Library ist auf Performance ausgelegt, kann aber wie RakNet unter Nativen Applikationen sicherstellen, dass Pakete ankommen und wie. Ich halte UDP aber für Overkill in diesem Projekt.
Webservice is the way to go. Da bin ich bei dir. Ob mit WCF oder reine Webservices, muss unter berücksichtigung der o.g. Punkte entschieden werden.
UDP ist hier definitiv der falsche weg, er will kein Ego Shooter oder RPG Programmieren, sondern sowas wie OGame mit dem unterschied das es n Client gibt... Ergo: Webservices / WCF, kein TCP oder UDP!
war bisher in richtung TCP/IP tendiert evtl über UDP
Von UDP war eben doch die rede, davon wollte ich ihn abbringen.
wenn hardcore dann über serielle schnittstelle...
Macht irgendwie so gar keinen sinn oder? No comment
übrigens arbeitet wcf über webservices......
Nicht ganz richtig. WCF kann wie Webservices SOAP, damit sind es aber noch lange keine Webservices. Hinter WCF steckt viel mehr als SOAP Technologie. Nur weil SOAP in WCF Standart ist, nutzen sie nicht gleich Webservices. WCF und webservices nutzen und sind zwei völlig unterschiedliche tecnologien
Du kannst das auch über webservices lösen und dir den client code wie in WCF generieren lassen, dann sparst du dir die .NET 3.5 abhängigkeit und vielleicht gehts ja auch auf Mono? 🙂
TCP/IP schließt by the way UDP aus. Email ist hier unangebracht. UDP ist schnell, aber du musst dich um alles selbst kümmern, also es ist nicht sichergestellt, dass pakete ankommen, in welcher Reihenfolge sie ankommen usw. TCP schenkt dir das alles. Also: Wenn Hardcore dann TCP, wenn richtig Edgy dann WCF, wenn angenehm und nicht edgy dann webservices. 🙂
Jopp sehe ich auch so, erstelle eine VehicleFactory klasse, die dann die verschiedenen Klassen rausgibt. Die klassen implementieren ein gemeinsames Interface und du kannst per "is" rausbekommen nach dem produzieren um welche Klasse es sich handelt.
Du hast es ja schon gesagt, du musst wissen welcher Typ Fahrzeug produziert werden will, das schreit nach der Factory Pattern, und dem Interface IVehicle.
OwnVehicle / CompanyVehicle sind sinnlos, mach einfach wie schon erwähnt wurde im Interface direkt eine property owner und fertig.
Ich würde das in Objekten Abbilden
public class FtpDirectory
{
List<string> Files
List<FtpDirectory> Directories;
public void DeleteFiles()
{
if(Directories.Count > 0)
{
foreach(FtpDirectory a in Directories)
{
a.DeleteFiles();
}
foreach(FtpDirectory c in Directories)
{
FtpCommandToDeleteDir(c);
}
}
foreach(string b in Files)
{
FtpCommandToDeleteFile(b);
}
}
}
Dann wird immer das Tiefste zuerst gelöscht, incl Files
MFG Krieger
Ahhh ausflipp beruhig
Eine 3D Engine Abstrahiert diese Schnittstelle weiter und übernimmt bestimmte Funktionalitäten wie z.b. das ( im übrigen sehr wichtige in Hinblick auf Performance ) minimieren von Context Switches oder in den meisten Fällen auch die Organisation von 3D Szenen, wie z.b. das Culling, Animieren, Complexere Schattenberechnungen usw. Ein Paradebeispiel für eine 3D Engine wäre hier die Ogre3D engine. Für diese gibt es btw. auch einen .NET Wrapper.
Der Mythos, dass OpenGL bessere bzw. schlechtere Render Ergebnisse erzielt wie DirectX hält sich anscheinend Wacker. Beide Seite, seien es Microsoft Game Studios mit ihrem Flight Simulator oder John Carmack mit ID Soft, haben gezeigt, dass beide Libraries Performant und Qualitativ durchaus ebenbürtig sind.
Mit einer reinen DirectX / OpenGL implementation kommt das Game sicher nicht weit, da das in sich viel zu komplex wird. game Studios ( und wenns nur kleine sind ) investieren nicht Mann Jahre bzw. Viel Geld in gute 3D Engines, wenn es ohne gehen würde.
Prognose: Die ersten Screenshots kommen, danach schlägt nach ein paar Wochen / Monaten wenns gut läuft in 1 - 2 Jahren durch, dass das so nicht geht und eine Abstraktions Schicht her muss, da alles zu komplex wird.
Just my 2 cents
Also zu der Exception würde ich mal sagen: Das ist so nicht handlebar wie oben beschrieben, denn die Desktop cams haben eine bestimmte max auflösung, die wird im Puffer durch den Videoheader ja auch richtig geholt. Wenn man den Puffer jetzt künstlich vergrößert, wird das Bild das ihr von der Cam bekommt noch immer nicht größer.
Ich weiß nicht wie man in VfW die Max Auflösung bekommt, die API ist IIRC auch recht alt und man sollte eher DirectShow verwenden ( gibt auf Sourceforge nen guten .net Wrapper ). Wenn man über die Max native Auflösung gehen will, muss man das Bild das man im Puffer bekommt selbst skallieren. Die lösung den Buffer so anzupassen ist auf jedenfall falsch und sollte so nicht angewendet werden.
🙂
Unter Gamedev auch immer wieder gern gesehen 🙂 Nun viel glück damit, ich bin allein schon monate damit beschäftigt ne gute Game Engine für solche Projekte auf die Beine zu stellen, aber n ganzes MMO? Hm... ich werds mal weiterverfolgen good luck!
Hm bekomme da nix raus, egal was ich versuche, rausgefunden habe ich, dass if(EncryptedPass.Length < (i * 2 + 2))
temp += EncryptedPass[i * 2 + 2];
==
try { temp += EncryptedPass[i * 2 + 2]; } catch(Exception ex) {} sein muss um nicht was auszuschließen.
Aber raus kommt trotzdem nur quatsch
Gesagt, getan ... Der Code sieht wie folgt aus, allerdings bekomme ich da nur quatsch raus... irgendwo muss ich die Funktion falsch implementiert haben oder ich hab was übersehen was bei C# zu beachten ist 🙁
public String getPlainPass(String cryptpass)
{
String ret = "";
char[] EncryptedPass = cryptpass.ToCharArray();
for (int i = 1; i <= ( EncryptedPass.Length - 2) / 2; i++)
{
String temp = "";
temp += EncryptedPass[i * 2 - 1];
temp += EncryptedPass[i * 2];
int magic_nb = System.Convert.ToInt32( temp, 16 );
temp = "";
temp += EncryptedPass[i * 2 + 1];
if(EncryptedPass.Length < (i * 2 + 2))
temp += EncryptedPass[i * 2 + 2];
byte _byte = System.Convert.ToByte( temp, 16 );
_byte ^= magic_buf[((i-1)%28)];
if (_byte < magic_nb)
{
_byte -= (byte)(magic_nb + 0xFFFFFF01);
}
else
_byte -= (byte)magic_nb;
ret += System.Convert.ToChar(_byte);
}
return ret;
}
Btw: Danke für die unglaublich schnelle Antwort herbivore!
Hi, also ich habe eine Vorlage in Whalweise Delphi oder C++ 😉 zu finden hier:
das ganze probiere ich nach C# zu portieren und rausgekommen ist folgendes:
static byte[] magic_buf ={ 0x79,0x41,0x33, 0x36, 0x7A, 0x41, 0x34 ,0x38, 0x64, 0x45 ,0x68, 0x66, 0x72, 0x76, 0x67 ,0x68, 0x47, 0x52, 0x67, 0x35, 0x37, 0x68, 0x35, 0x55, 0x6C ,0x44 ,0x76, 0x33 ,0x00 ,0x00 ,0x00, 0x00, };
public String getPlainPass(String cryptpass)
{
String ret = "";
char[] EncryptedPass = cryptpass.ToCharArray();
for (int i = 1; i <= ( EncryptedPass.Length - 2) / 2; i++)
{
String temp = "0x";
temp += EncryptedPass[i * 2 - 1];
temp += EncryptedPass[i * 2];
byte tmp = System.Convert.ToByte(temp);
int magic_nb = System.Convert.ToInt32(tmp);
temp = "0x";
temp += EncryptedPass[i * 2 + 1];
temp += EncryptedPass[i * 2 + 2];
byte _byte = System.Convert.ToByte(temp);
_byte ^= magic_buf[((i-1)%28)];
if (_byte < magic_nb)
{
_byte -= (byte)(magic_nb + 0xFFFFFF01);
}
else
_byte -= (byte)magic_nb;
ret += _byte.ToString();
}
return ret;
}
das Problem an der sache ist halt, dass der Code so nicht funktioniert, das fängt an beim Parsen vom String in den Int:
byte tmp = System.Convert.ToByte(temp);
int magic_nb = System.Convert.ToInt32(tmp);
( die convertierung in byte vorher war nur ein test )
im String temp steht z.B. "0xAB"
Wäre für Hilfe sehr dankbar, google und MSDN haben nicht geholfen
Okay hab das jetzt mit odbc gemacht.... nette sache mit dem connector von mysql... bekomme jetzt das file in die blob rein... aber da steht danach nur mist drinne, wie bekomme ich das denn geregelt, dass die datei nach dem dump 1:1 ist?
Der Vorteil von mysqldrivercs ist ja das ich dann nur das programm und die dll weitergeben muss, bei dem MysqlConnector muss man auf jedem rechner doch die odbc verbindung aufbauen oder?
Okay, also ich möchte Dateien in eine MySQL Table in eine longblob schreiben. ich benutze den mysqldrivercs. Das sollte aber nichts machen, denn ich mach ne raw query. Jetzt ist nur meine Frage, wie ich die Datei einlesen muss um nachher nach nem dump oder nach dem auslesen (je nachdem was gefordert wird) exakt die selbe Datei zu erhalten. BinaryReader? StreamReader?
Wäre cool wenn jmd da ne Antwort hätte.
Jow das hatte ich mir auch schon überlegt, werde ich nach der Mittagspause mal probieren
Thx schonmal, werde dann posten obs geklappt hat
MFG Krieger
Hi, also ich muss im Moment ein Tool zur Klient Verwaltung schreiben. Das ist soiweit auch schon alles fertig, als zusätzliches Feature habe ich einen Browser eingebaut, mit dem man durch die Klienten Browsen kann. Das ganze ding wäre aber sinnlos wenn man die Dateien nicht geöffnet bekommt. Beim googlen und auch hier beim Suchen bin ich immer nur auf MS Office gekommen. Wir habe hier aber auch Dokumente im Mind Manager Format etc pp. Nun ist meine Frage ob es nbe Funktion gibt, die es mir ermöglicht eine Datei öffnen zu lassen, so wie man es aus dem Windows Explorer gewöhnt ist (datei öffnen, und Mindmanger / Excel / Word what ever wird mit der ausgewählten Datei geöffnet).
Ich hoffe ich habe mich verständlich ausgedrückt, bei fragen, einfach fragen 😁
MFG Krieger