2012-03-22 5 views
7

Próbuję dowiedzieć się o języku C# z SQL CE, aby mój program mógł zapamiętać rzeczy.Podstawowy start z Visual Studio C# i SQL Compact (podłącz, wybierz, wstaw)?

I stworzyli bazę danych i można podłączyć do niego:

SqlCeConnection conn = 
     new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf"); 
conn.Open(); 

I łączy w porządku, myślę, bo jeśli mam zmienić nazwę dbJournal.sdf się coś złego nie debugowania rację.

Załóżmy, że chcę wykonać proste zapytanie SELECT.

(SELECT * FROM tblJournal) 

Jak to zrobić?

Co z prostą wkładką?

(INSERT TO tblJournal (column1, column2, column2) VALUES 
             (value1, value2, value3)) 

Przywykłam do PHP i MySQL (jak właściwie można zobaczyć: o))

+0

@gideon, dzięki za edycję. Jak mogę utworzyć blok kodu? Pozdrawiam – user1281991

+1

Trzeba tylko zaznaczyć tekst i nacisnąć "Ctrl + K" To wcina tekst o 4 spacje, które formatują go jako blok kodu. – gideon

Odpowiedz

3

@Chuck wspomina EntityFramework co upraszcza rzeczy i wykonuje całą pracę pisania sql dla Ciebie.

Ale tutaj jest podstawowe podejście ADO.NET, które opiszę poniżej.

Klasy zgodnie ze standardową wzór tak, aby wstawić/odczytu z serwera SQL lub innych baz danych istnieją dokładne repliki klasy jak SqlConnection lub OleDbConnection i OleDbCommand itp

Jest to najbardziej Barebone podejście ado.net:

using(SqlCeConnection conn = 
      new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf")) 
using(SqlCeCommand cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    //commands represent a query or a stored procedure  
    cmd.CommandText = "SELECT * FROM tblJournal"; 
    using(SqlCeDataReader rd = cmd.ExecuteReader()) 
    { 
    //...read 
    } 
    conn.Close(); 
} 

Następnie do odczytu danych:

while (rd.Read()) 
{//loop through the records one by one 
    //0 gets the first columns data for this record 
    //as an INT 
    rd.GetInt32(0); 
    //gets the second column as a string 
    rd.GetString(1); 
} 

miła i szybsza droga do odczytu danych jest jak th jest:

using(SqlCeDataAdapter adap = 
      new SqlCeDataAdapter("SELECT * FROM tblJournal", "your connection")) 
{ 
    //the adapter will open and close the connection for you. 
    DataTable dat = new DataTable(); 
    adap.Fill(dat); 
} 

ten pobiera wszystkie dane w jednym strzale do klasy DataTable.

Aby wstawić dane:

SqlCeCommand cmdInsert = conn.CreateCommand(); 
cmdInsert.CommandText = "INSERT TO tblJournal (column1, column2, column2) 
          VALUES (value1, value2, value3)"; 
cmdInsert.ExecuteNonQuery(); 
+0

jest to świetny zestaw przykładów, ale nie powinno być conn.Close(); gdzieś? –

+0

dobry połów @ matthew_360 Zaktualizowałem pytanie. – gideon

+0

@gideon Twoje połączenie jest w użyciu bloku ... nie oznacza to, że połączenie zostanie automatycznie zamknięte/unieszkodliwione? – Prokurors

1

Jeśli po prostu rozpocząć naukę, że zaproponuje ci używać LINQ, aby to zapytaniami.

Oto artykuł MSDN pokazujący cechy LINQ.

http://msdn.microsoft.com/en-us/library/bb425822.aspx

Używanie LINQ to będzie proste do zrobienia każdego zapytania. Na przykład, można napisać kwerendę wybierającą się ten

from journal in TblJournal select journal 

lub po prostu

context.TblJournal 
1

również w celu poprawy wydajno, lepiej zachować conncection otwarty cały czas podczas pracy z SQL CE (w przeciwieństwie do innych standardowych baz danych SQL)

Powiązane problemy