Laden...

Performance bei string ?

Erstellt von martin_zi vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.681 Views
M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren
Performance bei string ?

Hi

Ich mach mir gerade Gedanken wie das mit dem String in dem Fall ist. ?(

Ich erzeuge mir in einer Schleife einen string. Mit dem wird dann über SqlCommand
der Wert in eine DB gespeichert. Ich laufe also über ein Feld von Zahlen oder anderen
Werten um so alle Daten in die DB zu speichern.

in etwa so:


string command = String.Format("INSERT INTO tempTbl (IDOld, .... , id);
using (SqlCommand cmd = new SqlCommand(command, connection))
{
   using (SqlDataReader reader = cmd.ExecuteReader())
   {
   }
}

Nur das ist wahrscheinlich nicht sehr schlau. Ich weiß nämlich nicht wie Format
den String erzeugt. Wird da für jeden String den ich erzeuge ein neues Objekt erzeugt und Speicher reserviert ? Das wäre dann doch zimmlich dämlich so weil danach der GBC wieder alles "aufsammeln" muss. Gibt es da eine besser Möglichkeite ? Oder wie macht man das geschickt ?

Noch was gibt es auch noch einen andere möglichkeit das Command abzusetzten ?
ExecuteReader ist da glaub ich auch nicht so schlau weil ich den Rückgabewert gar nicht gebrauchen kann 🤔

Gruß
Martin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo martin_zi,

==> SqlParameter/SqlParameterCollection

herbivore

J
3.331 Beiträge seit 2006
vor 16 Jahren

Original von martin_zi
Noch was gibt es auch noch einen andere möglichkeit das Command abzusetzten ?
ExecuteReader ist da glaub ich auch nicht so schlau weil ich den Rückgabewert gar nicht gebrauchen kann

DbCommand.ExecuteNonQuery

Jürgen

M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren

Hi

Noch mal.. laut msdn kann man damit nur Spaltennamen mappen.
Ich bräuchte aber auch sowas in etwa wie "select * from @tabelName"
Das geht mit SqlParameter nicht. Oder doch ?

Bei meinem Versuch kommt immer eine SQLException und sagt mir dass der
Parameter @tabelName nicht existiert.

Gruß Martin

476 Beiträge seit 2004
vor 16 Jahren

hallo martin_zi,

nein, für eine Tabelle gibt es keinen SQLParameter. Hier würde ich den Tabellenamen über eine String-Verkettung bzw. einem StringBuilder an die SQL-Anweisung anfügen, insofern der Tabellenamen nicht aus einer Benutzereingabe herrührt. Dann müsstest du die Benutzereingabe entwerten bevor du sie in die SQL-Anweisung übernimmst um die Gefahr einer SQL-Injection zu vermeiden.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren

Achso verstehe ok danke !

Gruß