azubi-tigerente Geschrieben 22. Juni 2010 Geschrieben 22. Juni 2010 Hallo zusammen, SqldataSource DS_SQL2 = new SqlDataSource(); DS_SQL2.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("MeinConnectionString").ConnectionString; Nun wird von meinem Programm ConnectionStrings, vor der "(" rot unterringelt. Folgene fehlermeldung bekomme ich: Der nicht aufrufbare Member System.Configuration.ConfigurationManager.ConnectionStrings kann nicht wie eine Methode verwendet werden. Wo liegt der Fehler. Dieses Beispiel habe ich aus dem ASP.Net 3.5 mit Visual C# 2008 Buch. Hat jemand eine Idee?? Zitieren
Mcolli Geschrieben 22. Juni 2010 Geschrieben 22. Juni 2010 Eckige Klammern statt Runde nehmen: System.Configuration.ConfigurationManager.ConnectionStrings["bla"] wie bei einem Array. Wie allen andern Rate ich Dir aber auch den Data Access Application Block der MS Enterprise Library zu nutzen. Die Enterprise Library ist offiziell von Microsoft und auch wie das .Net Framework vollkommen umsonst. Die enterpise Library muss nur auf dem Entwickler-Rechner installiert sein alle in deinem Projekt referenziert Enterprise Library Dlls werden in den Ausgabe Ordner beim Build gepackt. Mit der Enterprise Library haste viele Möglichkeiten in verschiedenen Berreichen - für Datenban beitet das vorallem den Vorteil auf hoher Abstraktionsebene zu operieren: [URL="http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.database%28PandP.31%29.aspx"]Database[/URL] db = [URL="http://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.data.databasefactory%28v=PandP.31%29.aspx"]DatabaseFactory[/URL].Create("MeinConStringAusderAppConfig"); using (IDataReader reader = db.ExecuteReader(CommandType.Text, "Select bla..")) { [INDENT]while (reader.Read()) { }[/INDENT] } Die Methode GetStoredProcCommand von Database ermöglicht dir auch auf in der DB Abgelegte Stored Procedures zu zugreifen. Transactionen incl Rollbacks sind möglich und und und. Einzige bei Oracle 9i versagte das Auto Connection Pooling so dass man dem ConnectionString in der app.config "Pooling=false" hinzu fügen musste. Zitieren
azubi-tigerente Geschrieben 22. Juni 2010 Autor Geschrieben 22. Juni 2010 Hi, vielen Dank für die schnelle Antwort - und siehe da es funktioniert. Eckige Klammern statt Runde nehmen: System.Configuration.ConfigurationManager.ConnectionStrings["bla"] wie bei einem Array. Wie allen andern Rate ich Dir aber auch den Data Access Application Block der MS Enterprise Library zu nutzen. Die Enterprise Library ist offiziell von Microsoft und auch wie das .Net Framework vollkommen umsonst. Die enterpise Library muss nur auf dem Entwickler-Rechner installiert sein alle in deinem Projekt referenziert Enterprise Library Dlls werden in den Ausgabe Ordner beim Build gepackt. Da verstehe ich nur Bahnhof Ich arbeite doch gar nicht mit DLL auf meinem Webserver?? Wie Du siehst bin ich kein prof. Zitieren
Mcolli Geschrieben 22. Juni 2010 Geschrieben 22. Juni 2010 (bearbeitet) Hauptsache es klappt Habe überlesen dass der Post sich auf ASP.net bezieht aber sciher hast Du auch in ASP.net Dlls: Wenn Du VisualStudio hast siehst du im Projektmappen-Explorer den Punkt "Verweise" oder engl "References". Dort sind alle DLLs referenziert die Du benutzt. Ohne Dlls geht gar nix in .Net. Da kann man dann halt auch noch mehr Verweise hinzufügen. So auch die Enterprise Library wenn Sie runtergeladen und installiert wurde. ---->Hier<---- steht auch noch mal wie Sowas geht für ASP Bearbeitet 22. Juni 2010 von Mcolli Zitieren
azubi-tigerente Geschrieben 28. Juni 2010 Autor Geschrieben 28. Juni 2010 mit blabla.Parameters.AddWithVaule("@id", delArtikel.Id); kann ich ja Variablen in meine Datenbankabfrage einfügen. Leider wird bei mir Parameters rot unterringelt. Folgende Fehlermeldung: "System.Web.UI.WebControls.SQLDataSource" enthält keine Definition für "Parameters", und es konnte keine Erweiterungsmethode "Parameters" gefunden werden, die ein erstes Argument vom Typ "System.Web.UI.WebControls.SQLDataSource" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) Zitieren
Mcolli Geschrieben 28. Juni 2010 Geschrieben 28. Juni 2010 Der Fehlermeldung entnehme ich, dass "blabla" vom Typ SqldataSource ist. Wenn Du Dir die Klassendokumentation (verbirgt sich hinter dem link^^) anguckst findest Du unter "Member" eine Auflistung aller Methoden und Properties. Du willst mit blabla.Parameters das Propertie "Parameters" ansprechen, dieses existiert laut Klassendokumentation gar nicht für die Klasse "SqldataSource". Genau das belegt auch die Fehlermeldung. Benutzt Du eine Entwicklungsumgebung (z.B. Visual Studio)?!?! Wenn ja müsste diese, nachdem Du "blabla." geschrieben hast, Dir eine Auflistung aller möglichen Properties und Methoden, die für "blabla" gültig sind, anzeigen. Du kannst an der Stelle nicht nach dem "." einfach irgendwas hinschreiben was dir gerade passt. Sondern nur eins von den angebotenen Sachen auswählen. Ich pers. habe mit der Klasse noch nicht gearbeitet und habe auch keine ASP.NET testumgebung zu hause. Ich glaube aber dass Dir die drei Properties: InsertCommand und InsertParameters und InsertCommandType weiterhelfen wenn Du ein Insert durchführen willst bzw: SelectCommand und SelectParameters und SelectCommandType für den Fall dass Du was Selectiren willst. Für Updates gibts analog dazu auch Properties (findest Du in der Klassendokumentation) Du findest unter den Links zu den Properties auch anschauliche Beispiele (leider in der XML Schreibweise). Grob gesagt geht man so vor: 1a Ein "InsertCommand" erstellen und dem Propertie zuweisen. (1b Ein InserCommandType festlegen) 2. Die "InserParameters" festlegen 3. Ausführen. Wenn dass noch nicht reicht: Tutorial Zitieren
azubi-tigerente Geschrieben 29. Juni 2010 Autor Geschrieben 29. Juni 2010 Vielen Dank für Deine schnelle Antwort. Das problem was ich habe ist, dass ich in der Code-Datei meine Datenbankabfrage manuell schreibe. jetzt müsste ich ja meiner Variablen @id z.B. einen Wert von einer TextBox zuweisen. Da liegt bei mir das Problem. ich habe meine sql-select abfrage blabl WHERE id = @id ich weiss jetzt nicht wie ich @id einen Wert zuweisen kann. Wie oben beschrieben funktioniert das mit dem Parameters nicht. wenn ich schreibe blbla where id ='"+TextBox1.Text+"' funktioniert es. Zitieren
streffin Geschrieben 29. Juni 2010 Geschrieben 29. Juni 2010 Ich weis jetzt ja nicht mit welchem DBMS du arbeitest, unter MS SQL worauf ich grade tippe wäre das declare @id int set @id = 5 alternativ : declare @id int = 5 Wobei ich nicht ganz versteh, warum du da über SQL variablen gehst, wenn du das SQL eh im Frontend zusammenbaust. Wenn du da eine UDF oder Stored Procedure schreibst würd das sinn machen (dynamisches SQL) aber wenn du dein Query eh im Frontend zusammensetzt, ist das eingentlich überflüssig würd ich meinen. Gruß Sven Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.