Laden...
D
Druid myCSharp.de - Member
Schüler Essen Dabei seit 08.10.2005 155 Beiträge
Benutzerbeschreibung

Forenbeiträge von Druid Ingesamt 155 Beiträge

29.03.2006 - 13:54 Uhr

Also folgendes:

Ich habe eine Tabelle:

id (weitere felder) parentid

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.

23.01.2006 - 20:40 Uhr

Ja natürlich. Du musst einfach einen Verweis (COM) auf die Microsoft Excel Lib. setzen.

23.01.2006 - 09:19 Uhr

Ein "Wegwerf Programm" für eine Datenbank. Noch nie gesehen.

23.01.2006 - 08:49 Uhr

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.

21.01.2006 - 15:22 Uhr

Die stellen einen Antrag. Ich kann mir nicht vorstellen das Treiber kein Copyright haben...

21.01.2006 - 13:28 Uhr

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

21.01.2006 - 01:54 Uhr

Du hast ja den Objektexplorer. Da ist ein Ordner "Stored Procedures". Rechtsklick und "Neu".

21.01.2006 - 01:53 Uhr

Wenns die CLR Integration schon gibt...

21.01.2006 - 01:48 Uhr

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:

Connectionstrings

18.01.2006 - 21:14 Uhr

Übrigens: Es ist überhaupt nicht möglich, dass beide den gleichen Instanznamen haben. 😉

18.01.2006 - 18:28 Uhr

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?

18.01.2006 - 17:15 Uhr

Hast du überhaupt Daten modifiziert?

18.01.2006 - 17:11 Uhr

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

18.01.2006 - 17:00 Uhr

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

17.01.2006 - 17:18 Uhr

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.

16.01.2006 - 19:40 Uhr

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 😉

16.01.2006 - 19:06 Uhr

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);

16.01.2006 - 19:04 Uhr

DateTime d = new DateTime();

-> Schau dir mal den Konstruktor an

Dann als Parameter wie gesagt! 😉

16.01.2006 - 19:02 Uhr

Klar "ALTER TABLE" (z.B.)!

Du musst dann [Alter] nehmen!

16.01.2006 - 19:01 Uhr

Wie meinste das?

16.01.2006 - 00:51 Uhr

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);








16.01.2006 - 00:47 Uhr

SqlConnection con = new SqlConnection( "Server=localhost;Database=master;Trusted_Connection=True;" );

con.Open();


15.01.2006 - 21:39 Uhr

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"

15.01.2006 - 21:33 Uhr

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:

Sybase Connector

15.01.2006 - 21:24 Uhr

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();

14.01.2006 - 15:04 Uhr

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:

SQL Injection

Gruß Christian

13.01.2006 - 11:40 Uhr

Du setzt den primärschlussel auf die beiden Felder 😉

12.01.2006 - 10:41 Uhr

DataRow dr = daten.Tables[0].Rows.Find(gefiltertedaten[e.Index].Item[0]);
dr[5] = e.NewValue.ToString();

11.01.2006 - 17:38 Uhr

SELECT title, SUM(rating)
FROM Bewertung
INNER JOIN Filme
ON Bewertung.filmID = Filme.filmID
GROUP BY title, rating;

11.01.2006 - 16:13 Uhr

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

11.01.2006 - 16:10 Uhr

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.

11.01.2006 - 15:14 Uhr

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.

11.01.2006 - 14:54 Uhr

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

11.01.2006 - 10:56 Uhr

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+

11.01.2006 - 00:27 Uhr

Ok, aber leider ist dass nicht notwendig denn die DLL die ec-hasslau.de einbinden muss liegt als SOURCE vor.

10.01.2006 - 22:46 Uhr

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

10.01.2006 - 22:27 Uhr

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.

10.01.2006 - 21:03 Uhr

Ist aber performanter 😉

10.01.2006 - 20:54 Uhr

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

10.01.2006 - 20:42 Uhr

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.

10.01.2006 - 20:08 Uhr

Warum du eine 2te DLL laden solltest?

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

  2. Ergibt sich aus 1: Damit du nicht das ganze SQL selber eingeben musst?

  3. Damit du kein Konvertierungsprobleme in .NET hast?

  4. Damit der Datenbankzugriff schneller geht?

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

10.01.2006 - 18:49 Uhr

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

10.01.2006 - 18:46 Uhr

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.

10.01.2006 - 15:16 Uhr

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.

10.01.2006 - 14:41 Uhr

Also hast du nun das Datenbankschema oder nicht?
Wenn ja, dann musst du einfach die (Datenbank)Tabellen laden (per DataAdapter in DataTables in dein DataSet), wenn nicht musst du erst diese in der Daten definieren.

10.01.2006 - 14:20 Uhr

Also du musst mir da was zu den Tabellen und Relations sagen sonst kann ich dir da nicht helfen.
Das Tutorial umfasst ja nur ADO.NET und nicht SQL an sich.

10.01.2006 - 13:41 Uhr

Also in diesem speziellen Fall hast du 2 Möglichkeiten:

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

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

10.01.2006 - 11:59 Uhr

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

10.01.2006 - 11:53 Uhr

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.