Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

1

15.03.2011, 11:18

c# etwas in DB speichern wenn noch nicht vorhanden

Guten Tag zusammen

Ich bin neu hier, und habe schon die erste Frage^^

Und zwar möchte ich einen String in meine DB speichern(MS SQL), wenn dieser String nicht schon in der DB ist.
Mein Problem ist es nun , dass ich nicht genau weis, wie ich das machen kann. Ich dachte mir, ich könnte auf die DB ein Select machen mit like %string%. ist es dann möglich die Antwort dieses Selects in einem String zu speichern, damit ich dies vergleichen kann? und was ist, wen der String noch nicht in der DB ist und es quasi eine leere Antwort gibt?

Ich hoffe ihr könnt mir helfen.

gruss Jaran
OMGWTFBBQ!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

15.03.2011, 11:57

Ich dachte mir, ich könnte auf die DB ein Select machen mit like %string%. ist es dann möglich die Antwort dieses Selects in einem String zu speichern, damit ich dies vergleichen kann?
Ja, aber dürfte unnötig sein, da das SELECT ja den Vergleich schon vorgenommen hat.

und was ist, wen der String noch nicht in der DB ist und es quasi eine leere Antwort gibt?
Dann gibt es keine Resultate zu der Anfrage.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

3

15.03.2011, 12:27

Ich blick grad nicht mehr so durch...

Also: Ich habe eine Tabelle die heisst URL. Die Tablle hat 2 Spalten: ID_URL und URL (ich weis, namensgebung ist doof, aber egal)

dass hier ist meine SQL Abfrage:

C#-Quelltext

1
2
3
4
5
6
urlaktiv = "www.google.ch" 
string strSQL4 = "SELECT URL FROM URL WHERE URL LIKE '%"+urlaktiv+"%'"; 
SqlDataAdapter cmd4 = new SqlDataAdapter(strSQL4, con); 
DataSet data = new DataSet(); 
cmd4.Fill(data, "URL"); 
DataTable dt = data.Tables["URL"]


jetz habe ich ja meinen String(falls einer vorhanden ist) in dieser DataTable.
Wie kann ich nun machen, das wenn der String noch nicht in der DB ist das es ihn dann einfügt, und sonst läuft es einfach weiter?
OMGWTFBBQ!

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

4

16.03.2011, 13:49

Ich würde dir stark empfehlen Linq2Sql zu verwenden es sei denn dich zwingt etwas dazu die Methode mit den QueryStrings zu verwenden. Ist sicher und auch schneller beim entwickeln.

Zu deiner Frage:

Du könntest ein SQL Statement dafür verwenden:

Zitat

INSERT INTO URL
(ID_URL, URL)
SELECT deineID, 'deineURL'
FROM dual
WHERE not exists (select * from URL
where URL.URL LIKE 'ÞineURL%');
Oder dein DataSet überprüfen:

C#-Quelltext

1
2
3
4
if(data == null || data.Tables.Count == 0 || data.Tables[0].Rows.Count ==0)
{
  // hier die URL einfügen
}


Mit Linq2SQL würde alles so aussehen:

C#-Quelltext

1
2
3
4
5
if (!urlTable.Any(table => table.URL.Contains(deineURL)))
{
  urlTable.InsertOnSubmit(deinURLEintrag);
  urlTable.Context.SubmitChanges();
}

jaran17

Frischling

  • »jaran17« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Bern

Beruf: Azubi

  • Private Nachricht senden

5

17.03.2011, 12:45

Ich habe das Problem nun volgendermassen gelösst:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
SqlDataReader sqlDataReader = sqlCommand01.ExecuteReader(); // Select ausführen 
while (sqlDataReader.Read()) // Lese solange Werte vorhanden sind 
{ 
//wenn schon vorhanden in DB, soll es ^sie nicht nochmals speichern 
string variable = sqlDataReader.GetString(0); // Werte aus Spalte 0 in String Speichern
Console.WriteLine(variable); 
urlsammeln(connection); 
} 
//Wenn noch nicht vorhanden, dann soll es den String in der DB speichern 
string sqlaktiv = "INSERT INTO URL(URL) VALUES('" + urlaktiv + "')";SqlCommand cmd3 = new SqlCommand(sqlaktiv, connection); 
cmd3.ExecuteReader(); 
Console.WriteLine("URL gespeichert");

trotzdem danke für eure hilfe :D
OMGWTFBBQ!

6

19.03.2011, 10:47

Lass das doch einfach die DB machen. Gibt es etwa nicht so eine Einstellung wie eindeutige Identifikation?! Alles andere verlangt viel zu viel Rechenaufwand -.-

Werbeanzeige