[ oggie @ 10.11.2006. 09:11 ] @
Ja sam pocetnik u VB.NET pa vas molim za pomoc.
U svojim starim VB projektima imao sam jednu parametarsku klasu sa metodama:Select, Insert, Delete i Update koje su radile nad bilo kojim tabelama. I tada sam radio sa diskonektovanim recordsetovima.

Npr Select * from Tabela where Filter gde su Tabela i Filter parametri koje prosledjujem iz funkcije.
Ovu metodu sam uspeo da napravim u VB.NET, ali ne umem Insert i Update.

Za Update sam prosledjivao kao parametar recordset, a onda metoda protrci po svim poljima recordseta, uhvati tip i ime svakog polja, u posebnoj funkciji ga konvertuje za sql i onda napravim string za Update.

Ovo ne umem da napravim u VB.NET, pa ako neko moze da mi pomogne.

Znaci ideja je da se Select povucem datatable ili dataset, u njemu izmenim zeljena polja i onda sa metodom Update vratim izmene u bazu.

Ima li neko ideju kako da ovo uradim?
Hvala unapred na odgovorima
[ negyxo @ 10.11.2006. 10:03 ] @
Otvori MSDN i otkucaj typed DataSet i procitaj sve u vezi toga, kao i TableAdapter-a.
[ colke77 @ 10.11.2006. 13:07 ] @
cekaj ako si za SELECT iskaz koristio

Select * from Tabela where Filter

Zar ne bi bilo logicno da za UPDATE koristis

UPDATE tabela SET atributi WHERE filters.

Ovo mi nekako deluje najlakse resenje i onda prenosis metodi samo stringove.
Postoji i bolje, ali dosta komplikovanije resenje.
[ aleksandarpopov @ 11.11.2006. 14:43 ] @
Imas i klasu CommandBuilder koji na osnovu table adaptera i njegovog select-a generise ostale sql-ove.
@Colke
Na koji komplikovaniji nacin mislis?
[ vladdy @ 11.11.2006. 18:45 ] @
Zaboravi na VB recordset pristup potpuno i pogledaj ADO.NET 2.0.

Postoje dva glavna nacina u .NET-u:

1. DataReader - Najslicnije starom recordset-u.

Napravis Datareader koji je "forward-only" i iscitavas podatke. Veoma brz ali zahtjeva otvorenu konekciju dok radis sa njim.

2. Dataset - Sadrzi vise tabela koje mogu imati relacije izmedju sebe. Pozoves DataAdapter koji Fill komandom napuni taj dataset/datatablu. Imas disconnected podatke na klientu ali je "teret" na aplikaciji malo veci. Kada se ti podatci izmjene, komandom DataAdapter.Update se salju u bazu podataka.


Malo je previse da ti sada objasnjavam kompletnu teoriju ADO.Net, samo pretrazi msdn i imas gomilu lekcija i primjera.
[ colke77 @ 13.11.2006. 07:48 ] @
Citat:
Na koji komplikovaniji nacin mislis?


Uf ..., ajd da pokusam da pojasnim kako ja to radim. Imam DataLayer sloj koji izvrsava operacije nad bazom podataka. U tom sloju postoji sledeca metoda (C#):

Code:

public bool ChangeObjects(GeneralDomainObject gdo)
{
            myCommand.CommandType = CommandType.Text;
            myCommand.CommandText = "UPDATE " + gdo.TableName + " SET " + gdo.UpdateAttributes() + " WHERE " + gdo.Criteria;

            try { myCommand.ExecuteNonQuery(); }
            catch (DbException e)
            {
                   ErrorMessage = e.Message;
                   return false;
            }
            return true;
 }


GeneralDomainObject je apstraktna klasa koju nasledjuju sve domenske klase koje inace reprezentuju tabele koje se nalaze u bazi podataka. Nasledjene klase implementiraju metode koje mozes videti u kodu.
Inace napravio sam i neki mali generator domenskih klasa, tako da za vecinu baza koje postoje nemam potrebu da rucno pisem domenske klase, vec ih generisem iz generatora klasa.