Datenbank wird beim Aufrufen geleert

Grorkef

Grünschnabel
Hallo,
ich habe das Problem das ich über mein Programm Daten in eine Datenbank lade über dataAdapter.Update. Wenn ich das gemacht habe und das Programm schließe und wieder öffne sind die Datensätze vorhanden, wenn ich nun aber das Programm schließe und dann im Sever-Explorer(VS2008) mir die Tabelle der Datenbank anschauen möchte löscht er alle einträge darin. Das echt nervig :( hoffe es hat jemand von euch eine Idee wie man das verhindern kann.

MFG Daniel L.
 
Hi,

Hier mal das bisschen Code:

Code:
SqlCeDataAdapter dA2 = new SqlCeDataAdapter();           
            command.CommandText = "SELECT * FROM Gebäude";
            dA2.SelectCommand = command;
            SqlCeCommandBuilder CommandBuilder = new SqlCeCommandBuilder(dA2);
            try
            {
                dA2.Update(dataSet.Tables["Gebäude"]);
            }
            catch (Exception e1)
            {
                MessageBox.Show("Error: " + e1.Message);
            }
 
Ja, ein bisschen Code ist das wirklich, da steig ich nicht ganz durch.
In der MSDN steht ein Beispiel das die Funktionsweise des CommandBuilder ganz schön illustriert.

Wo nimmst du das command-Object her, und wo baust du die Verbindung auf? :confused:

Ich hab das mal ein wenig kommentiert und ein ganz klein wenig geändert, denke das sollte reichen um darauf aufzubauen:

Code:
using System;
using System.Data;
using System.Data.SqlServerCe;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                //Connection rrstellen
                using (SqlCeConnection conn = new SqlCeConnection(@"Data Source = D:\MyDatabase.sdf"))
                {
                    //Connection öffnen
                    conn.Open();

                    //SQL Command erstellen
                    SqlCeCommand cmd = conn.CreateCommand();
                    //SQL Command CommandText ZUWEISEN
                    cmd.CommandText = "SELECT * FROM testTable";

                    //DataAdapter erstellen
                    SqlCeDataAdapter adp = new SqlCeDataAdapter(cmd);

                    //CommandBuilder erstllen
                    SqlCeCommandBuilder cb = new SqlCeCommandBuilder();
                    //DataAdapter des CommandBuilder zuweisen
                    cb.DataAdapter = adp;

                    //Testausgaben
                    Console.WriteLine(cb.GetUpdateCommand().CommandText);
                    Console.WriteLine("\r\n\r\n");
                    Console.WriteLine(cb.GetInsertCommand().CommandText);
                    Console.WriteLine("\r\n\r\n");
                    Console.WriteLine(cb.GetDeleteCommand().CommandText);
                    Console.WriteLine("\r\n\r\n");

                    //Neues Dataset Erstellen und befüllen
                    DataSet ds = new DataSet();
                    adp.Fill(ds);

                    //Testausgabe des Datasets
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        Console.WriteLine(ds.Tables[0].Rows[i].ItemArray[0]);

                    //DataSet bearbeiten
                    ds.Tables[0].Rows[0]["name"] = "Joe";

                    //Daten zum DataSet hinzufügen
                    object[] newData = {"Joey", "CFO", "01.01.2001"};
                    ds.Tables[0].Rows.Add(newData);

                    //Update (geändertes DataSet) in die DB schreiben (daraus wird hier ein UPDATE für den geänderten Datensatz und ein INSERT für den neuen Datensatz)
                    adp.Update(ds);
                }
            }
            catch (Exception e1)
            {
                Console.WriteLine(e1.ToString());
            }
            Console.ReadKey();

        }
    }
}

SqlCeCommandBuilder in der MSDN
 
Zuletzt bearbeitet:
Zurück