Strona główna » Carckowanie » lang csharp » poczatkujacy ADO + SQL
poczatkujacy ADO + SQL [wiadomość #787] wto, 17 lipiec 2007 07:11 Przejdź do następnej wiadomości
krs jest aktualnie niedostępny krs
Wiadomości: 1
Dołączył(a): lipiec 2007
Junior Member
Witam

Mam pytanie, po przerobieniu kilku lektur i zwiedzeniu stron o C# dalej
nie potrafie zapisac danych z formularza asp do bazy SQL, poniewaz w
wiekszosci ksiazek omawia sie wyswietlanie danych.

Czy moglby ktos po ludzku wytlumaczyc jak odbywa sie zapis np jak
zapisac dane z pola tekstowego do SQL?
Re: poczatkujacy ADO + SQL [wiadomość #789 (odpowiedź na #787) ] wto, 17 lipiec 2007 08:15 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
Kamil Wojcieszek jest aktualnie niedostępny Kamil Wojcieszek
Wiadomości: 7
Dołączył(a): czerwiec 2007
Junior Member
krs napisał(a):
> Witam
>
> Mam pytanie, po przerobieniu kilku lektur i zwiedzeniu stron o C#
> dalej nie potrafie zapisac danych z formularza asp do bazy SQL, poniewaz
> w wiekszosci ksiazek omawia sie wyswietlanie danych.
>
> Czy moglby ktos po ludzku wytlumaczyc jak odbywa sie zapis np jak
> zapisac dane z pola tekstowego do SQL?
Chociażby tak :

protected void Button1_Click(object sender, EventArgs e)
{
NpgsqlEx db = new NpgsqlEx();
string stringSql;

stringSql = String.Format("INSERT INTO public.test
VALUES('{0}')", this.TextBox1.Text);

db.QueryExecuteNonQuery(stringSql);
}


oczywiście klasa NpgsqlEx to moja klasa pośrednicząca, a Ty w tym
miejscu musisz utworzyć połączenie. Oczywiście jeszcze możesz używać
DataSet itd. Możliwości jest dużo, a proponuje najpierw pobawić się z
WindowsForms i bazy danych szczególnie że na MSDN jest sporo przykładów.

Pozdrawiam Kamil Wojcieszek
Re: poczatkujacy ADO + SQL [wiadomość #791 (odpowiedź na #789) ] wto, 17 lipiec 2007 14:25 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
keczerad jest aktualnie niedostępny keczerad
Wiadomości: 8
Dołączył(a): maj 2007
Junior Member
Kamil Wojcieszek napisał(a):
> krs napisał(a):
>> Witam
>>
>> Mam pytanie, po przerobieniu kilku lektur i zwiedzeniu stron o C#
>> dalej nie potrafie zapisac danych z formularza asp do bazy SQL,
>> poniewaz w wiekszosci ksiazek omawia sie wyswietlanie danych.
>>
>> Czy moglby ktos po ludzku wytlumaczyc jak odbywa sie zapis np jak
>> zapisac dane z pola tekstowego do SQL?
> Chociażby tak :
>
> protected void Button1_Click(object sender, EventArgs e)
> {
> NpgsqlEx db = new NpgsqlEx();
> string stringSql;
>
> stringSql = String.Format("INSERT INTO public.test
> VALUES('{0}')", this.TextBox1.Text);
>
> db.QueryExecuteNonQuery(stringSql);
> }

1. nigdy, ale to nigdy nie robimy takiego inserta :

INSERT INTO public.test VALUES('{0}')

zawsze robimy takiego :

INSERT INTO public.test (pole) VALUES(wartosc)

poniewaz, dodanie nastenego pola do tej tabeli zakonczy sie
spektakularna kupa w postaci sypiacej bledem aplikacji.

2. po drugie starajmy sie stosowac parametry .


//Conn to polaczenia z baza danych ktore trzeba nawiazac.
string query = "INSERT INTO public.test (pole) VALUES(?wartosc)";
try
{
MySqlCommand cmd = new MySqlCommand(query, Conn);
cmd.Parameters.Add("?wartosc", MySqlDbType.Int32).Value = wartosc;
cmd.ExecuteNonQuery();
}
catch(Exeption ex){
error = ex.Message;
}
}

to akurat z mysql, do mssql sluzy SqlCommand

--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML wraz z modulem do Subiekta GT
Re: poczatkujacy ADO + SQL [wiadomość #795 (odpowiedź na #791) ] śro, 18 lipiec 2007 01:47 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
Kamil Wojcieszek jest aktualnie niedostępny Kamil Wojcieszek
Wiadomości: 7
Dołączył(a): czerwiec 2007
Junior Member
keczerad napisał(a):
> Kamil Wojcieszek napisał(a):
>> krs napisał(a):
>>> Witam
>>>
>>> Mam pytanie, po przerobieniu kilku lektur i zwiedzeniu stron o C#
>>> dalej nie potrafie zapisac danych z formularza asp do bazy SQL,
>>> poniewaz w wiekszosci ksiazek omawia sie wyswietlanie danych.
>>>
>>> Czy moglby ktos po ludzku wytlumaczyc jak odbywa sie zapis np jak
>>> zapisac dane z pola tekstowego do SQL?
>> Chociażby tak :
>>
>> protected void Button1_Click(object sender, EventArgs e)
>> {
>> NpgsqlEx db = new NpgsqlEx();
>> string stringSql;
>>
>> stringSql = String.Format("INSERT INTO public.test
>> VALUES('{0}')", this.TextBox1.Text);
>>
>> db.QueryExecuteNonQuery(stringSql);
>> }
>
> 1. nigdy, ale to nigdy nie robimy takiego inserta :
>
> INSERT INTO public.test VALUES('{0}')
>
> zawsze robimy takiego :
>
> INSERT INTO public.test (pole) VALUES(wartosc)
>
> poniewaz, dodanie nastenego pola do tej tabeli zakonczy sie
> spektakularna kupa w postaci sypiacej bledem aplikacji.
>
> 2. po drugie starajmy sie stosowac parametry .
>
>
> //Conn to polaczenia z baza danych ktore trzeba nawiazac.
> string query = "INSERT INTO public.test (pole) VALUES(?wartosc)";
> try
> {
> MySqlCommand cmd = new MySqlCommand(query, Conn);
> cmd.Parameters.Add("?wartosc", MySqlDbType.Int32).Value = wartosc;
> cmd.ExecuteNonQuery();
> }
> catch(Exeption ex){
> error = ex.Message;
> }
> }
>
> to akurat z mysql, do mssql sluzy SqlCommand
>
Co i jak robimy zawsze zależy od konkretnej sytuacji, i nigdy nie mów
nigdy. Jak byś nie zauważył przytoczyłem najprostszy przykład jaki jest
możliwy. A ta twoja "spektakularna kupa" w twoim przypadku też może się
zakończyć błędem jeśli wstawię nowe pole np. z not null, także jeśli
aktualizujemy bazę w każdym przypadku trzeba sprawdzić poprawność
zapytań. Zgadzam się że czym jawniej się pisze tym lepiej, ale jeśli już
coś strasznie krytykujesz chociaż rób to dobrze.
Re: poczatkujacy ADO + SQL [wiadomość #797 (odpowiedź na #787) ] śro, 18 lipiec 2007 10:04 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
hanz jest aktualnie niedostępny hanz
Wiadomości: 4
Dołączył(a): maj 2007
Junior Member
witam !

mam podobny problem. wyczytalem sobie ze zapis odbywac sie moze w ten
sposob:

private SqlConnection dbConnect = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\teste rDataBase.mdf;Integrated
Security=True;User Instance=True");
//dodawanie bledow
private void addErrorButton_Click(object sender, EventArgs e)
{
command = "insert into errorsTable(errorModule, errorName,
errorDesc, errorPriority, errorStatus, errorStartDate, testerId)" +
" values('" + checModulCombo.Text + "','" +
nameModulTB.Text + "','" + opisModulTB.Text + "','" + priorytetTB.Text +
"','" + "aktywny" + "','" + DateTime.Today + "','" + 1 + "')";

SqlCommand insertcmd = new SqlCommand(command, dbConnect);
insertcmd.Connection.Open();
insertcmd.ExecuteNonQuery();
insertcmd.Connection.Close();
}

mam cos takiego w dwoch projektach. w jednym działa a w drogim nie. co
moze byc tego powodem?

pozdrawiam
hanz
Re: poczatkujacy ADO + SQL [wiadomość #798 (odpowiedź na #787) ] śro, 18 lipiec 2007 10:20 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
Slawomir jest aktualnie niedostępny Slawomir
Wiadomości: 4
Dołączył(a): lipiec 2007
Junior Member
krs napisał(a):
> Witam
>
> Mam pytanie, po przerobieniu kilku lektur i zwiedzeniu stron o C#
> dalej nie potrafie zapisac danych z formularza asp do bazy SQL, poniewaz
> w wiekszosci ksiazek omawia sie wyswietlanie danych.
>
> Czy moglby ktos po ludzku wytlumaczyc jak odbywa sie zapis np jak
> zapisac dane z pola tekstowego do SQL?

Całość odbywa się w kilku krokach. Reagujesz na zdarzenie Click na
buttonie i wykonujesz co następuje:
1. Nawiązanie połączenia z bazą
2. Wykonanie inserta
- utworzenie polecenia sql
- dodanie wszystkich parametrów
- wywołanie polecenia
3. Zamknięcie połączenia z bazą

W szczegółach to mogłoby wyglądać jakoś tak:

// 1. Nawiązanie połączenia z bazą
SqlConnection cn = new SqlConnection("string połączenia do bazy");
cn.Open();

// 2. Wykonanie komendy "Insert into tabela ..."
// - utworzenie polecenia sql
SqlCommand cmd = new SqlCommand("Insert into tabela (imie, nazwisko)
values (@imie, @nazwisko)", cn);

// - dodanie wszystkich parametrów
cmd.Parameters.Add(new SqlParameter("imie", "Jan"));
cmd.Parameters.Add(new SqlParameter("nazwisko", "Kowalski"));

// - wywołanie polecenia
cmd.ExecuteNonQuery();


// 3. Zamknięcie połączenia z bazą
cn.Close();

pisałem z pamięci więc mogą być literówki jakieś

pozdrawiam,
Sławek
Re: poczatkujacy ADO + SQL [wiadomość #799 (odpowiedź na #795) ] śro, 18 lipiec 2007 11:39 Przejdź do poprzedniej wiadomościPrzejdź do następnej wiadomości
keczerad jest aktualnie niedostępny keczerad
Wiadomości: 8
Dołączył(a): maj 2007
Junior Member
Kamil Wojcieszek napisał(a):

> Co i jak robimy zawsze zależy od konkretnej sytuacji, i nigdy nie mów
> nigdy. Jak byś nie zauważył przytoczyłem najprostszy przykład jaki jest
> możliwy. A ta twoja "spektakularna kupa" w twoim przypadku też może się
> zakończyć błędem jeśli wstawię nowe pole np. z not null, także jeśli
> aktualizujemy bazę w każdym przypadku trzeba sprawdzić poprawność
> zapytań. Zgadzam się że czym jawniej się pisze tym lepiej, ale jeśli już
> coś strasznie krytykujesz chociaż rób to dobrze.


nie obrazaj sie tylko posluchaj rady kolegi. Nie trzeba sprawdzac
poprawnosci zapytan jak sie je dobrze napisze, bo dalej powinny dzialac
(chyab ze usuwas jakies kolumny). Co to tego "nigdy nie nalezy robic" to
podtrzymuje swoje zdanie po prostu takich insertow nie nalezy robic a
tym bardziej pokazywac jakiemus poczatkujacemu programiscie !


--

keczerad

http://www.e-mo.com.pl
sklep w (X)HTML wraz z modulem do Subiekta GT
Re: poczatkujacy ADO + SQL [wiadomość #800 (odpowiedź na #797) ] śro, 18 lipiec 2007 16:03 Przejdź do poprzedniej wiadomości
Tomasz Muszyński jest aktualnie niedostępny Tomasz Muszyński
Wiadomości: 17
Dołączył(a): kwiecień 2007
Junior Member
hanz pisze:
> mam podobny problem. wyczytalem sobie ze zapis odbywac sie moze w ten
> sposob:

Podobny problem z czym?

> command = "insert into errorsTable(errorModule, errorName,
> errorDesc, errorPriority, errorStatus, errorStartDate, testerId)" +
> " values('" + checModulCombo.Text + "','" +
> nameModulTB.Text + "','" + opisModulTB.Text + "','" + priorytetTB.Text +
> "','" + "aktywny" + "','" + DateTime.Today + "','" + 1 + "')";

Powyższe jest do d.... używaj SqlParameter.

> mam cos takiego w dwoch projektach. w jednym działa a w drogim nie. co
> moze byc tego powodem?

Może rozwiniesz twórcze "nie działa"?
Np. jeśli w polu tekstowym był apostrof to może się wysypać.

tm
Poprzedni wątek:ASP.NET - kilka tematów: online edytory, pliki include, wyświetlanie treści contentplaceholderach
Następny wątek:[C#, VS2005] Refencja od obiektu
Idź do forum:
  


Aktualna data: nie maj 20 17:36:53 EDT 2012

Łączny czas generowania strony wyniósł 0,02228 sekund.
.:: Kontakt :: 901 sprawdz strone niezarejestrowana strona 906 niezarejestrowana strona brak hosta Strona główna ::.

Powered by: FUDforum 2.7.6.
Copyright ©2001-2006 FUD Forum Bulletin Board Software