[ Omega Warrior @ 29.08.2007. 19:32 ] @
Pozdrav,

ovo je moj kod:

Try
Dim DbTest As SqlClient.SqlConnection
DbTest = New System.Data.SqlClient.SqlConnection("Data Source=(local)\SQL;Initial Catalog=testiranje123;Trusted_Connection=yes;Integrated Security=True;Asynchronous Processing=true")
DbTest.Open()


DbTest.Close()
Catch ex As SqlException
MsgBox("idemo dalje")

Catch ex As DataException
MsgBox("idemo dalje")

Catch ex As Exception
MsgBox("idemo dalje")

End Try

ovo je u load eventu forme, pokusavam napraviti mehanizam za mijenjanje ADO.NET connection stringa.

Gore navedeni connection string je sigurno kriv, to sam namjerno napravio kako bih on ulovio SqlException i dalje bih riješavao putem .ini filea; vukao bih connection string iz ini filea. No to nije bitno. Znači pojavi mi se exception, to je ok. Exception je:
SqlException:
Cannot open database "testiranje123" requested by the login. The login failed.
Login failed for user 'test\test'.

Ja nikako da ulovim exception i da ga riješim.

Molio bih ako netko zna išta o ovome neka slobodno kaže.

Unaprijed zahvaljujem!
[ roberto555 @ 30.08.2007. 07:06 ] @
nisam te baš skužio previše ali:

--------------------------
InvalidOperationException
Cannot open a connection without specifying a data source or server.
or
The connection is already open.

SqlException
A connection-level error occurred while opening the connection. If the Number property contains the value 18487 or 18488, this indicates that the specified password has expired or must be reset. See the ChangePassword method for more information.
--------------------------ovo su exception-i za metodu open konekcije, dataexception ti netreba
a u tvojem kodu bi se trebao prikazati message box sa porukom idemo dalje (daj tu dodaj još + ex.message, da vidiš orginalni tekst), a zašto želiš konekcijski string mjenjati u catch dijelu? nemožeš odmah!?
[ Prokleta_Nedelja @ 30.08.2007. 14:59 ] @
mozda hoce da napravi brute force attack na bazu
[ Omega Warrior @ 30.08.2007. 15:21 ] @
>
>
Stvar je ovakva. Moram napraviti sigurnosni mehanizam za mijenjanje
postavke baze. tj.

onda radim ovakvo nešto:

try
dim db as new sqlconnection(connection string)
db.open
db.close
catch e as sqlexception
end try ...

Ako se uspije spojit, nikome ništa, a ako ne inputbox se pojavljuje i
traži valjani connection string
Koji se nakon toga trajno pohranjuje u .ini file.

Jedini problem je što ja taj exception nemogu uhvatit tj. stalno mi se
pojavljuje poruka sa exceptionom. Kao da ni nema catch linije... Probao
sam sa još puno exception handling tehnika:
catch e as exception
catch e as system.data
...

exception koji mi se pojavljuje je SqlException.

Sad da li je to neki BUG ili šta, ja ne znam ali nikako ga nemogu
uhvatiti, bilokakva pomoć je i više nego dobrodošla.

Hvala unaprijed!
[ roberto555 @ 30.08.2007. 15:39 ] @
makni sve ove catch koje sad imas, i stavi samo Exception - taj ti lovi sve greške, i u message box u taj catch stavi da ti prikaže message od iznimke

C#

Code:

.
.
.
catch(Exception ex)
{
messagebox.show(ex.message);
}


i onda tu napiši to što ti bude pisalo u tom message box-u kad se pojavi, taj tekst točno prekopiraj tu!

[ Fedya @ 31.08.2007. 16:34 ] @
@Roberto, to je najgore sto moze da uradi. Nikad ne treba hvatati genericke izuzetke.

Sto se samog poroblema tice, verujem da ti je ukljucen neki debug, i da ti zato puca. Kompajliraj u release, i vidi da li ce ga onda uhvatiti. Naravno pod uslovom da si siguran da je SqlException u pitanju.
Prodji jos jednom aplikaciju step by step i vidi gde pukne, i u koji blok skoci.

I jos jednom za kraj: Ne hvataj bazni Exception
[ roberto555 @ 31.08.2007. 19:24 ] @
nisam mu ja rekao da on tako stavi i neka to koristi neka neg stavi tak i poruku prekopira ovdje jer možda nije sql exc. kad mu ga ne uhvati, to je bila misao toga da stavi exception, sorry ako si ti krivo svatio!

Citat:

i onda tu napiši to što ti bude pisalo u tom message box-u kad se pojavi, taj tekst točno prekopiraj tu!