INSERT INTO soll nur fehlende Datensätze kopieren

DimpiM

Mitglied
warum passt doch so
Code:
if(String.IsNullOrEmpty(meldung))
    cmd.Parameter.AddWithValue("@foo", DBNull.Value);
else
    cmd.Parameter.AddWithValue("@foo", meldung);
bzw.
Code:
SqlParameter sqlParamFoo = new SqlParameter();
sqlParamFoo.ParameterName = "@foo";
if(String.IsNullOrEmpty(meldung))
    sqlParamFoo.Value = DBNull.Value;
else
    sqlParamFoo.Value = meldung;

...
cmd.Parameter.Add(sqlParamFoo);


achja und wenn du eine Variable einen leeren String zuweist, am Besten so:
Code:
String strTemp = String.Empty;


zu deiner anderen Frage... würde schon gehen, aber wozu? Is dann ja nur Redundanz, genau was eine SQL Tabelle verhindern soll
 

Gotenks

Mitglied
Hey @ all habe noch eine frage zu diesem Thema :S

Ich habe drei Tabellen(A,B,C)
Ich wollte jetzt, dass er bei einem Button-Klick die Tabellen A und B miteinander joint und diese dann direkt in die Tabelle C speichern, dass war nicht so problematisch.
http://mrfoo.de/archiv/133-Ausgabe-eines-SQL-SELECT-Befehls-automatisch-in-eine-neue-Tabelle.html
hier habe ich was dazu gefunden :)

Jetzt wollte ich aber, dass er auch immer nur die hinzufügt die neu in der TabelleA (und TabelleB (da diese tabelle immer aktualisiert werden, die TabelleB wird nur um Zellen erweiter, sprich Null-Values werden gefüllt und bei TabelleA kommen ganze Datensätze neu)) sind.
Habe dann den Code von DimpiM benutzt.
Habe ihn dann so umgebaut:
C#:
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Conn;
            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "SELECT * FROM TabelleC";
            
            Boolean hasRows = false;
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.HasRows)
                    hasRows = true;
            }
            if (hasRows)
            {
                cmd.CommandText = "UPDATE Tabelle3";
                cmd.CommandText += "SET Tabelle3.Summe = Tabelle1.Summe,";
                cmd.CommandText += "Tabelle3.Spalte1 =  Tabelle1.Spalte1 ,";
                cmd.CommandText += "Tabelle3.Spalte2 =  Tabelle1.Spalte2 ,";
                cmd.CommandText += "Tabelle3.Spalte3 =  Tabelle2.Spalte1 ,";
                cmd.CommandText += "Tabelle3.Spalte4 =  Tabelle2.Spalte2,";
                
                cmd.CommandText += "FROM Tabelle1 LEFT JOIN Tabelle2 ";
                cmd.CommandText += "ON(Tabelle1.Spalte1 = Tabelle2.Spalte2)";

                cmd.CommandText += "WHERE Tabelle3.Spalte1 =  Tabelle1.Spalte1  ";
                cmd.CommandText += "AND Tabelle3.Spalte2 =  Tabelle1.Spalte2";
                cmd.ExecuteNonQuery();

            }
            else
            {
                cmd.CommandText = "INSERT INTO Zahlungs ";
                cmd.CommandText += "SELECT Tabelle1.Summe,Tabelle1.Spalte1,Tabelle1.Spalte2,Tabelle2.Spalte1,Tabelle2.Spalte2 ";
                cmd.CommandText += "FROM Tabelle1 LEFT JOIN Tabelle2 ON(Tabelle1.Spalte1 = Tabelle2.Spalte2)";
                cmd.ExecuteNonQuery();

            }

Sobald ich einmal auf Button-Klicke, ist alles Super er überträgt die neuen Daten aus TabelleA und gut :)
Doch sobald neue Datensätze in TabelleA sind, übertragt er keine neuen Datensätze, es kommt weder eine Fehlermeldung noch irgendwas anderes?

Weiß vielleicht jemand wie ich das Problem lösen kann?

LG

edit: erledigt, genau wie bei dem code xD
 
Zuletzt bearbeitet: