2008-08-28 23 views
7

W zasadzie próbuję znaleźć najprostszy sposób wykonania podstawowej operacji wstawiania w języku C# .NET przy użyciu przestrzeni nazw SqlClient.C# - SQLClient - Najprostszy INSERT

Używam SqlConnection dla mojego łącza db, już miałem sukces wykonywania niektórych odczytów, i chcę wiedzieć najprostszy sposób wstawiania danych. Znajduję coś, co wydaje mi się dość gadatliwymi metodami, gdy google.

Odpowiedz

15
using (var conn = new SqlConnection(yourConnectionString)) 
{ 
    var cmd = new SqlCommand("insert into Foo values (@bar)", conn); 
    cmd.Parameters.AddWithValue("@bar", 17); 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
} 
+0

Spot na! Użycie parametru nie tylko chroni przed atakami SQL injection (w zależności od typu parametru .net), ale pozwoli również SQL Server buforować skompilowane zapytanie, a następnie podstawi parametr po następnym wywołaniu tego kodu. – MPritchard

+1

Wyniki zmienia się: stosując (var Conn = nowy SqlConnection (yourConnectionString)) stosując (var cmd = nowy SqlCommand ("wkładka do wartości foo (@bar)", CT)) { cmd.Parameters.AddWithValue (” @bar ", 17); conn.Open(); cmd.ExecuteNonQuery(); } – MPritchard

+0

(Przenoszenie starej odpowiedzi tutaj jako komentarza) Opuściłem użycie SqlCommand rozmyślnie, ponieważ OP szukał "najprostszego" kodu, aby uzyskać wstawkę (chociaż zachowałem ją na łączu, co jest ważniejsze). Zgadzam się, że to dobra praktyka. –

0
using (SqlConnection myConnection new SqlConnection("Your connection string")) 
{ 
    SqlCommand myCommand = new SqlCommand("INSERT INTO ... VALUES ...", myConnection); 
    myConnection.Open(); 
    myCommand.ExecuteNonQuery(); 
} 
+1

-1. Takie podejście zachęcałoby do ręcznego budowania ciągu SQL i nie używania sparametryzowanego SQL. Przepraszam – MPritchard

2

Ponieważ wydaje się, że dopiero się rozpoczął to teraz jest najlepszy czas, aby zapoznać się z pojęciem warstwy danych Access (obligatory wikipedia link). Będzie ci bardzo pomocna, gdy będziesz mieć więcej interakcji z aplikacjami i chcesz zminimalizować duplikację kodu. Zapewnia również bardziej spójne zachowanie, ułatwiając testowanie i mnóstwo innych rzeczy.