FormLoad & SQLQuery

0

Witam,

przesiadam się powoli z VB .NET na C#.

Dziś wydarzyła się rzecz której do końca nie potrafię pojąć, mam nadzieje że jesteście w stanie mi to wytłumaczyć.

w zdarzeniu form_load mam takich oto kilka lini:

SqlConnection sc = new SqlConnection("workstation id=(local);packet size=4096;user id=sa;data source='(local)\\Instance';persist security info=True;initial catalog=database;user=sa;password=");

DataTable TabSlWplaty = new DataTable("TabSlWplaty");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("", sc);

da.SelectCommand.CommandText = "SELECT * FROM sl_wplaty WHERE slwpl_aktywny=1";
da.Fill(TabSlWplaty);
dg.DataSource = TabSlWplaty;


da.SelectCommand.CommandText = "SELEEEECT * FROM TABELA_NIE_ISTNIEJE WHERE slwpl_aktywny=1";
da.Fill(TabSlWplaty);
dg.DataSource = TabSlWplaty;

drugi SELECT jest specjalnie taki pojechany żeby składniowo i semantycznie(taka tabela w bazie nie istnieje) był niepoprawny.

i teraz jestem trochę skołowany.
VB w takim przypadku
1.wyrzuca błąd na lini z drugim Fill-em

C# natomiast:
1.nie rzuca ŻADNEGO błędu
2.pokazuje formę z wypełnionym gridem przez pierwszego SELECTA tak jakby ten drugi kompletnie nie istniał

CO CIEKAWE:
analogiczny kod w zdarzeniu np. button_click generuje błąd i zachowuje się wg mnie poprawnie.

co Wy o tym myślicie?

0

Debugowałeś? Wchodzi do każdej linijki?

0

Debugger zatrzymuje się na drugim(niepoprawnym) fillu i dalej nie idzie, nadal nie rzucając żadnego błędu.

0

cos bajki opowiadasz, musi poleciec SqlException bo skladnia jest bledna (incorect syntax)
a jesli tabeli nie bedzie to poleci Invalid object name, a jak bledna kolumna to poleci ze nie ma kolumny

generalnie polecenie sql musi byc poprawne bo inaczej sql server wyrzuci blad, ktory zostanie w kodzie zwrocony jako wyjate SqlException

0

niestety nie opowiadam bajek, sam jestem w szoku gdyż pisze w VS 2008 od samego początku i VB zawsze rzucał wyjątki.

AHA:

uruchomiłem właśnie VB.NET, zrobiłem analigoczny kod i jest... to samo:/
ktoś jest mi to w stanie wytłumaczyć?
VS 2008 SP1.

celuje że przyczyną może być Windows 7 64 bit, tydzień temu przeszedłem z 32 bit i w sumie od tamtej pory nic nie pisałem.

czy 64 bity mogą być przyczyną?

podkreślam że ma to miejsce tylko w form_load, dla button_click i innych zdarzeń wszystko działa jak należy zarówno C# jak VB .NET

EDIT:

zauważyłem teraz że w form_load w ogóle nie rzuca wyjątków:/

int x="aaa"

wchodzi aż miło, pokazuje się forma i wszystko jest OK
uruchamiając natomiast program z EXEca, pokazuje piękny błąd konwersji.

czasem się jeszcze rozsypuje vshost.exe, wyrzuca Nieoczekiwany błąd

0

niestety nie mam pod reka ani 64bit, ani win7 zeby to sobie odtworzyc
ale brzmi co najmniej dziwnie
mozesz przeniesc ten kod z sql (ale tez z int) do konstruktora formy i zobaczyc jaks sie zachowa
oraz pozniej to samo w nowej aplikacji konsolowej?
a, i jestes pewien ze to projekt C# jest? ;)

0

że C# to na bank;)

w console application rzuca wyjątek tak jak należy.

w konstruktorze formy również rzuca piękny wyjątek.

w form_load natomiast - NIET

VS przeinstalowany, nadal to samo.

EDIT:
http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/69a0b831-7782-4bd9-b910-25c85f18bceb

problem oficjalnie znany w Microsoft, jakaś poprawka niby jest, trochę proteza ale instaluje i próbuje
problem występuje zawsze na VS 2008 & 64bit ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1