🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #414

Re: Wtawianie danych do tabeli, problem i dwie sciezki - dlugie

#414
From: Piotr Olech
Date: Fri, 16 Jan 2004 07:14
86 lines
4388 bytes
No hej,
Na pierwszy rzut oka, to w pierwszym nie widz� o co biega, ale w drugim masz
z�� kolejno�� Update i AcceptChanges. Po AcceptChanges wszystkie rekordy
dostaj� status "original" (czy jako� tak) i �aden nie kwalifikuje si� do
update'u....
Co do 1 rozwi�zania, to:
- co masz na my�li m�wi�c "rozwi�zanie oparte o Bind"? po przyk�adzie tego
nie widz�...
- rozumiem, �e zmienna "sql" w "new OleDbCommand(sql, dbConn)" to polecenie
SQL UPDATE zawieraj�ce znaki "?" w miejscach gdzie chcesz wstawi� parametry?
Co do elegancko�ci rozwi�zania - to kwestia potrzeb. Nie ma sensu (IMHO)
zaprz�ga� DataSet'�w do wykonania jednego prostego Update, ale je�eli ma to
by� kompleksowa obs�uga (pobranie danych, wy�wietlenie, edycja przez
u�ytkownika i zapis, to szkoda si� m�czy� samemu - lepiej wykorzysta� ten
mechanizm)

Pozdr�wka

-- 
Piotr Olech
Remove "spam_off" while answering...

U�ytkownik "Krzysztof" <kkdi...@poczta.onet.pl> napisa� w wiadomo�ci
news:bu6g8u$sku$1@news.onet.pl...
> Hi all (dawno mnie tu nie bylo, i ciesze sie ze dyskusje troszke sie
> rozwienly :)
>
> Mam taki problem, w trakcie dzialania aplikacji bardzo czesto bede
wpisywal
> cos to tabeli synchronizowanej pomiedzy dwoma instancjami roznych
aplikacji.
> Tak wiec w ciagu minuty bedzie dopisywane okolo 130-150 rekordow
> (odczytywanych przez druga aplikacje). Staralem sie to wykonac za pomoca
> ponizszego kodu, ale "nie dziala", moze ktos na pierwszy rzut oka moze
> powiedziec dlaczego? :
> (rozwiazanie oparte o Bind, 5 parametrow, pierwsza kolumna jest
> autoincrement, tabelna na MS Access)
>
> OleDbConnection dbConn =
> (OleDbConnection)dbConnector.getInstnce().getConnection();
> OleDbCommand dbCom = new OleDbCommand(sql, dbConn);
> dbCom.Parameters.Add( new OleDbParameter("Par1", true) );
> dbCom.Parameters.Add( new OleDbParameter("Par2", "DoNikad") );
> dbCom.Parameters.Add( new OleDbParameter("Par3", wXml) );
> dbCom.Parameters.Add( new OleDbParameter("Par4", DateTime.Now) );
> dbCom.Parameters.Add( new OleDbParameter("Par5", DBNull.Value) );
> dbCom.Parameters.Add( new OleDbParameter("Par6", false) );
> dbCom.ExecuteNonQuery();
>
> komunikat bledu :
> Index (zero based) must be greater than or equal to zero and less than the
> size of the argument list.
>
> Druga metoda co prawda nie wywala bledu, ale tez nie dopisuje informacji
do
> tabeli:
>
> OleDbDataAdapter da = new OleDbDataAdapter("select * from " +
> TABELA_IMP_EXP,
> (OleDbConnection)dbConnector.getInstnce().getConnection() );
> da.UpdateCommand = new OleDbCommandBuilder(da).GetUpdateCommand();
> DataTable dt = new DataTable();
> da.Fill(dt);
> DataRow dr = dt.NewRow();
> dr[1] = true;
> dr[2] = "DoNikad";
> dr[3] = wXml;
> dr[4] = DateTime.Now;
> dr[5] = DBNull.Value;
> dr[6] = false;
> dt.Rows.Add(dr);
> dt.AcceptChanges();
> da.Update(dt);
>
> Czy ktos ma sugestie jak to zrobic? Radze sobie baaardzo nieeleganckim
> rozwiazaniem - sklejam SQL (jako string) i wywoluje z OleDbCommand. Ale
nie
> chce tak robic, chce to zrobic zgodnie z zasadami...
> Zastanawialem sie nad rozwiazaniem z DataSet, ale pewnie i tak (z
> dokumentacji) dodawanie nowego rekordu sprowadzi sie do rozwiazania z
> DataTable/DataRow.
>
> Pozdrawiam
> Krzysztof
>
>
Technical Details
Message-ID: <bu82ro$4ec$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!newsfeed.gamma.ru!Gamma.RU!news.man.poznan.pl!newsfeed.gazeta.pl!news.gazeta.pl!not-for-mail
References: <bu6g8u$sku$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!newsfeed.gamma.ru!Gamma.RU!news.man.poznan.pl!newsfeed.gazeta.pl!news.gazeta.pl!not-for-mail
From: "Piotr Olech" <pol...@klub.spam_off.chip.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: Wtawianie danych do tabeli, problem i dwie sciezki - dlugie
Date: Fri, 16 Jan 2004 08:14:33 +0100
Organization: Portal Gazeta.pl -> http://www.gazeta.pl
Lines: 88
Message-ID: <bu82ro$4ec$1@inews.gazeta.pl>
References: <bu6g8u$sku$1@news.onet.pl>
NNTP-Posting-Host: 81.210.90.66
X-Trace: inews.gazeta.pl 1074237112 4556 81.210.90.66 (16 Jan 2004 07:11:52 GMT)
X-Complaints-To: use...@agora.pl
NNTP-Posting-Date: Fri, 16 Jan 2004 07:11:52 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
X-Priority: 3
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-User: polech
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit