🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Wtawianie danych do tabeli, problem i dwie sciezki - dlugie

#413
From: Krzysztof
Date: Thu, 15 Jan 2004 16:49
56 lines
3159 bytes
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: <bu6g8u$sku$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!newsfeed.fjserv.net!proxad.net!newsfeed.tpinternet.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!newsfeed.fjserv.net!proxad.net!newsfeed.tpinternet.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: "Krzysztof" <kkdi...@poczta.onet.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Wtawianie danych do tabeli, problem i dwie sciezki - dlugie
Date: Thu, 15 Jan 2004 17:49:59 +0100
Organization: news.onet.pl
Lines: 58
Sender: kkdiesel@poczta.onet.pl@194.146.120.27
Message-ID: <bu6g8u$sku$1@news.onet.pl>
NNTP-Posting-Host: 194.146.120.27
X-Trace: news.onet.pl 1074185310 29342 194.146.120.27 (15 Jan 2004 16:48:30 GMT)
X-Complaints-To: ab...@onet.pl
NNTP-Posting-Date: 15 Jan 2004 16:48:30 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit