Also folgendes:
Ich habe eine Tabelle:
1
2 3
3 1
Also das feld partentid linkt auf die eigentliche id. So ist es möglich verschachtelungen darzustellen. Alles schön und gut.
Doch wie selecte ich ein solches system nun?
Ich würde das dann gerne in einem Treeview darstellen oder ähnlichem.
Ja natürlich. Du musst einfach einen Verweis (COM) auf die Microsoft Excel Lib. setzen.
Ein "Wegwerf Programm" für eine Datenbank. Noch nie gesehen.
Ich denke auch, dass es eine schlechte Idee die IDE in zu großem Maße zu Nutzen.
Später sucht mal sich schlapp im Eigenschaftsfenster um zu sehen was beim Start geändert wurde. Anstelle sollte man lieber das alles in die Sub New schreiben.
Die stellen einen Antrag. Ich kann mir nicht vorstellen das Treiber kein Copyright haben...
Außerdem darfst du ja nicht die Daten auf deinem Server anbieten. Ist ja Copyright
Du kannst aber eine Linksammlung machen.
Und dazu ein Forum für neue Treiber von der Community
Du hast ja den Objektexplorer. Da ist ein Ordner "Stored Procedures". Rechtsklick und "Neu".
Wenns die CLR Integration schon gibt...
Siehe auch mal hier:
MSSQL, auch wenn es XCOPY unterstützt ist nicht als Dateidatenbank (wie Firebird, Access) gedacht (auch wenn man nun auf dem beste Wege dahin ist).
Du musst die MDF Datenbank gar nicht angeben (beim MSSQL 2000 durfteste das gar nicht)
also ich habe auch nix mit MDF gefunden. Aber schau mal hier:
Übrigens: Es ist überhaupt nicht möglich, dass beide den gleichen Instanznamen haben. 😉
Hallo!
Also ich habe den SQL Sever 2000 (MSDE) und den SQL Server 2005 Express auf einem Rechner installiert. Dumm ist nur dass beide ja den selben TCP Port verwenden.
Das mag der 2005er nicht. Wenn ich einstelle, dass TCP aktiviert sein soll (2005) dann startet er nicht neu.
Folgendes Workaround:
MSDE beenden, 2005 starten, MSDE starten
Nun muss ich das immer machen wenn der Server neustartet. Gibts nen anderes Workaround dafür?
Sorry aber echt mal:
Siehs mal von der Perspektive:
Ich bin ein Nutzer der das Programm möglichst für meinen illegalen Zwecke nutzen möchte. Wenn ich die Möglichkeit habe durch ein Textfeld entweder str_quellenname oder str_Status_A einzugeben würde ich erstmal folgendes eingeben:
''; DELETE FROM [table]; UPDATE t_Users SET Password = 'evilhacker' WHERE Username = 'Admin'--
Und nu? Die Zeichen ('') beenden den ersten SQL Befehl. Dann kommt der 2te den du nicht erwartet hast: "DELETE FROM [table];". Damit ich auch noch gleich Admin bin setze ich das Passwort auf 'evilhacker' (übrigens hätte ich auch andere Tabellen nehmen können). Schließlich kommentiert "--" den Rest deines SQL aus.
Nu stehste wohl auf'm Schlauch. NEIN ich sage jetzt keine Lösung aber du solltest hier echt mal schaun, wie viele so'n Fehler machen! Sonst such mal nach SQL INJECTION
Siehe Email von christiandernehl@web.de
Ich würde eine System Stored Procedure nehmen. Damit kannst du alle Permissions auslesen. Ich habe dafür eine Klassenbibliothek (für die meißten SQL Server 2000 Security Procedures).
Ich habe die Klassenbibliothek damals in VB.NET 2003 geschrieben. Einbinden kannst du Sie auf jeden Fall, verstehen, dass ist was anderes, ist eben nicht C#. Ich hoffe die DLL hilft die weiter. Bei Bedarf kannst du dir auch nur die benötigten Prozeduren anschauen um in C# umwandeln. Wenn du mehrere Funktionen umgewandelt hat, wäre es nett von die mir auch deinen Code zu schicken, dann kann ich den auch an den nächsten weitergeben der VB nicht versteht.
Gruß Christian
Also schau mal hier:
http://support.businessobjects.com/library/docfiles/cps10/downloads/en/crxi_WhatsNew_en.pdf
Bei einem RAS XI kannst du Bilder dynamisch hinzufügen.
Also ich habe dazu eine eigene Methode die ich dynamic binding nenne. Es wird dynamisch gebunden, heißt, wenn ein Nullwert vorkommt wird das Binding temp. aufgehoben.
Ist aber auch nicht ganz einfach.
Muss man die Birne anstrengen 😉
Ich denke, dass du auf einen gerade erstellten Parameter nicht zugreifen kannst.
Mach es doch so:
MySqlParameter p = new MySqlParameter("@value", MySqlDbType.VarChar);
p.Value = "gugus";
cmd.Parameters.Add(p);
DateTime d = new DateTime();
-> Schau dir mal den Konstruktor an
Dann als Parameter wie gesagt! 😉
Klar "ALTER TABLE" (z.B.)!
Du musst dann [Alter] nehmen!
Test mal mit:
OleDbConnection con = new OleDbConnection("dein Connectionstring");
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Tabelle;", con);
DataTable dt = new DataTable("");
da.Fill(dt);
foreach(DataColumns dc in dt.Columns)
Debug.WriteLine(dc.Columnname);
SqlConnection con = new SqlConnection( "Server=localhost;Database=master;Trusted_Connection=True;" );
con.Open();
Das liegt daran, dass "vorname" KEINE EIGENSCHAFT von einer Textbox ist (es sei denn du nutzt eine eigene abgeleitete Textbox mit der Eigenschaft vorname)
txtmy.DataBindings.Add(new DataBinding("Text", MyDataTable, "vorname"));
Gruß Christian
-> An "Text" muss gebunden werden. Bei DateTimePicker an "Value"
Also es gibt da mehrere Möglichkeiten. Nun habe Sybase noch nie verwendet, aber standardmäßig kannst du OLEDB und ODBC verwenden.
Sybase stellt einen Treiber zur Verfügung. Ich denke, dass der .NET Connector mit der Datenbank kommt wie bei Oracle. Die Hilfe gibts hier:
Unter "einfach reinhauen" würde ich folgendes verstehen:
string sHTML;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO t_HTML(HTML) VALUES('" + sHTML + "');";
Das ist natürlich nicht der richtige Ansatz. Bitte Parameter verwenden (wie herbivore bereits sagte). Parameter sind die beste Sicherheit um SQL Injection vorzubeugen.
string sHTML;
SqlConnection cn = new SqlConnection(); //Set connection
SqlCommand cmd = new SqlCommand("INSERT INTO t_HTML(HTML) VALUES (@HTML);", cn);
SqlParameter p = new SqlParameter();
p.Value = sHTML;
p.Name = "@HTML"
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();
Nur (grade bei Webanwendungen tötlich) kann es hierbei schnell zur SQL Injection kommen!!!
Ich weiß, manchmal denkt mal als Entwickler ein bisschen Optimistisch (wird schon nix passieren), passierts dann denkt man nach. Übrigens: Selbst über den Connectionstring kann man schon unerwartete Sachen machen.
So nun der Link nach der ganzen Moral:
Gruß Christian
Du setzt den primärschlussel auf die beiden Felder 😉
DataRow dr = daten.Tables[0].Rows.Find(gefiltertedaten[e.Index].Item[0]);
dr[5] = e.NewValue.ToString();
SELECT title, SUM(rating)
FROM Bewertung
INNER JOIN Filme
ON Bewertung.filmID = Filme.filmID
GROUP BY title, rating;
Übrigens wird durch ein Sort in einem DataView dass auf eine DataTable verweißt die DataTable beim Sort nicht verändert.
Warum darf es denn kein DataView sein; ich denke es wird anders gar nicht gehen.
Ich kenne mich nicht mit Webservices aus, kann aber ungefähr sagen was die sind:
Webservices sind Dienste die vorallem das HTTP Protokol benutzen um über Netzwerke zwischen Applikationen Daten auszutauschen (denke ich).
Also es gibt da aber auch noch die Alternative ASP.NET würde ich sagen, denn es wird wohl schwierig werden (kostenlose) Entwicklungsumgebungen dafür zu finden.
Ich denke bei ASP.NET ist es da einfacherer.
Nein, brauchst du nicht!
SELECT titel, bild, ip, rating
FROM Bewertung
INNER JOIN Filme
ON Bewertung.filmID = Filme.filmID;
gibt alle Filme UND alle Bewertungen aus.
Für alle Filme mit Bewertung oder keiner Bewertung musst du dann LEFT JOIN anstelle von INNER JOIN nehmen.
Übrigens darfst du ja nicht das Programm dann kommerziell verteilen wenn du MySQL oder den MySQL Connector verwendest (dann musst du eine Lizenz kaufen)
Ja, tendiere zu Firebird. 😉
Nein er mein das .NET Framework 1.0, 1.1 und 2.0, denn die Klassen vom MySQL laufen für alle .NET 1.0+
Ok, aber leider ist dass nicht notwendig denn die DLL die ec-hasslau.de einbinden muss liegt als SOURCE vor.
Original von inTrance
Die Features des Grids lassen sich doch trotz DataReader voll nutzen (wenn halt
auch manuell), wie z. B. diese Fehler-Icons in der Zelle usw.? Oder würdet ihr
vom DataGridView dann ganz abraten bei Verwendung des Readers?
Dazu brauchst du die Schema Infos. Ich kann mir nicht vorstellen ganz ohne Metadaten zu arbeiten...
Also dass ist jetzt echt nicht leicht.
Wenn es sich um eine Client Application handelt (davon gehe ich aus) würde ich folgendes sagen:
Ich würde erstmal mit dem DataAdapter so arbeiten wie er ist. Dazu würde ich generell das Laden der Daten in eine Klasse auslagern. Wenn noch Zeit übrig bleibt kann man noch den Reader schnell implementieren und es sollte so auch funktionieren.
Toll wäre auch ein Mix: Die Schemas werden per DataAdapter geladen und die Daten an sich per DataReader. Dann kannst du Grids verwenden (denn du hast ja das Schema) und die Geschwindigkeit des DataReaders.
Ok.
Das macht die Lösung einfach.
Nehme den Link von mir. Haste schon reingeschaut?
Es wird nur ein Verzeichnis angelegt mir C# Source Files und der kompilierten DLL.
Du kannst alle Dateien auch einfach in dein Projekt einbinden.
Du brauchst so keinen Treiber (aber einen MySQL Server natürlich).
Also ich nehme an du darfst keinen Key verwenden (denn sonst würdest du dir echt Berge in den Weg legen).
Also noch erstmal der Vorteil des DataReaders:
Schnell
Daten werden syncron ausgelesen, heißt du kannst nach z.B. 1000 Datensätzen das auslesen stoppen.
Nachteile:
Connection muss von Hand geöffnet werden
Nur Forward Reading, man kann nicht mehr einen bereits ausgelesenen Datensatz einsehen.
Der DataReader muss wieder geschlossen werden
Es kann immer nur ein DataReader eine Verbindung nutzen (auf jeden Fall in 1.1)
Zu den DataTables bzw. dem DataSet
Vorteile:
Die Verbindung muss nicht geöffnet werden
DataAdapter übernehmen die komplette Verbindung zur Datenbank
Schemen werden direkt in das DataSet geladen.
Nachteile:
Langsamer als der DataAdapter
Daten werden komplett ausgelesen
Also ich tendiere eher zum DataAdapter in den meißten Situationen ist wie gesagt Problemabhängig.
Warum du eine 2te DLL laden solltest?
Damit du kein Probleme hast an denen du Tage verbringst nur um herauszufinden, dass du eventuell mit dem CommandBuilder keine Parameter aus einer gespeicherten Abfrage ableiten kannst?
Ergibt sich aus 1: Damit du nicht das ganze SQL selber eingeben musst?
Damit du kein Konvertierungsprobleme in .NET hast?
Damit der Datenbankzugriff schneller geht?
Damit der Kunde auch (eventuel) eine andere Version von MySQL in der Zukunft nehmen kann (z.B. 5.1) ohne dass du alles umprogrammieren musst?
Ich denke es gibt weitere Gründe.
Dann meine Frage: Wieso nimmst du dann nicht ODBC? Ich meine so musst du ja auch erstmal einen OLEDB Driver für MySQL laden. Das gibt wahrscheinlich mehr Probleme als den Connector zu verwenden.
Ne echt mal nix gegen Firebird finde es auch ne super Datenbank, habe auch selber schon Anwendungen programmiert die auf Firebird aufsetzen. Am besten finde ich die Connectionstringbuilder Klasse. 😉
Mit XCOPY wusste ich dass echt jetzt mal nicht, sorry mein Fehler...
Natürlich reicht die, aber wieso nimmst du dann überhaupt .NET? Ich meine es gibt -zig Nutzer die haben nicht das Framework. Das müsstest ja auch installieren. Ab besten gehts dann eigentlich mit Assembler?
Ne mal echt. Du brauchst ja keine Xtra Sachen, weil du C# Source Files runterlädst! Du packst nur ein paar Dateien mehr in deine Exe oder DLL was auch immer und dann ist gut. Da brauchste kein COM oder ne externe DLL.
Original von burning snow
Habe ich da etwas falsch verstanden? Ich glabe nicht dass du SQL Server 2005 wie MS Access benutzen kannst. Es ist richtig dass SQL Server 2005 XCOPY fähig ist, aber Vorraussetzung ist eben ein installierter Server.
Dies wurde auch schon in einem anderen Thread diskutiert.
Was meinst du mit
Original von burning snow
Ich glabe nicht dass du SQL Server 2005 wie MS Access benutzen kannst
?
Du kannst weitaus mehr machen...
Ok, Reporting Services/Forms da ist dann wirklich nen großer Unterschied. VBA kann man ja wohl durch C# code ersetzen, oder etwa nicht?
Ähm sorry, ich dachte die JET Engine SIMULIERT einen Server!? Oh und was ist mit den Benutzern und Gruppen? Die sind Systemweit bzw. Serverweit gültig und nicht an eine Datei gebunden.
Also in diesem speziellen Fall hast du 2 Möglichkeiten:
Möglichkeit (einfach)
Du definierst in der Datenbank eine Tabelle die die gleiche Struktur wie die Tabelle der Nutzer hat. Dann kannst du eine DataTable damit füllen (dass solltest du machen um das Schema zu holen machen; es werden jedoch keine Werte übernommen (Rows.Count == 0)).
Möglichkeit(etwas schwerer)
Ja dann musste über SQL ran. Create Table über Commands und dann kannste entweder Möglichkeit 1 nehmen oder mit Commands weitermachen...
Also ich habe grade ein Tutorial in ADO.NET zur Hand, leider in VB.NET. Aber ich denke viel lässt sich daraus ableiten.
Den Oracle Client nimmste am besten von Oracle und nicht von MS.
Habe zwar noch nie selber mit Oracle zu tun gehabt, darf aber annehmen, dass es sich nicht zu großartig unterscheidet.
Die DLL musst du als Reference einbinden. Sonst kannst du die auch nicht verwenden.
Ich schicke dir mal das Tutorial. Absender: christiandernehl@web.de
Gruß Christian
Ja das ist ein Vorteil bei Access.
Wobei ich noch mal betonen möchte:
XML ist KEINE Alternative wenn man größere Mengen Daten speichern will. Also Probleme >100MB große Dateien später in ein DBMS quetschen zu müssen sollte man echt vermeiden und dann direkt ein DBMS nehmen.
Übrigens: DBMS gibts auch bei Wikipedia für alle die nicht sonderlich viel mit Datenbank am Hut haben.
Access ist aber nicht kostenlos.
Außerdem: Access wird eventuell (eher wahrscheinlich) keine Zukunft haben (überrascht???) Wer schon einmal den neuen SQL Server 2005 bzw. die Express Version gesehen hat und dann noch das kostenlose Programm SQL Server 2005 Manger dann wird man ganz schnell sehen, dass der SQL Server 2005 auch XCOPY unterstützt!
Für alle denen XCOPY nix sagt: Man kann die Datenbankdateien einfach auf Diskette kopieren und mitnehmen und wo anders nutzen (wie bei MSAccess).
Zu Firebird: Ein sehr schöne Alternative, vorallem wenn auch eventuell UNIX Clients zugreifen sollen. Ich bin mir aber ziemlich sicher, dass Firebird XCOPY nicht unterstützt.
Soll nicht heißen: Wer mit kleinen Daten arbeitet kann super XML nutzen vorallem auch die XML Serialisierung die sich dann sehr nett mit der Geschäftslogik verbinden lässt.