Zum Inhalt springen

Progammgesteuerte Datenbindung c# asp.net


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben (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 von Mcolli
Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...