Strona główna » Carckowanie » lang csharp » poczatkujacy ADO + SQL
| poczatkujacy ADO + SQL [wiadomość #787] |
wto, 17 lipiec 2007 07:11  |
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ść #791 (odpowiedź na #789) ] |
wto, 17 lipiec 2007 14:25   |
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   |
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   |
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ść #800 (odpowiedź na #797) ] |
śro, 18 lipiec 2007 16:03  |
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
|
|
|
Idź do forum:
Aktualna data: nie maj 20 17:36:53 EDT 2012
Łączny czas generowania strony wyniósł 0,02228 sekund. |