Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Kontrollera databaskoppling

Postades av 2008-03-11 16:36:24 - Jane Eriksson, i forum asp.net generellt, Tråden har 8 Kommentarer och lästs av 1017 personer

Hej igen!
Jag är ny på asp.net 2.0 i VB som ni kanske förstår och har en liten fråga igen.
Jag har ett anmälningsformulär och när man klickar på skicka-knappen, så ska uppgifterna insertas i databasen och det fungerar jättebra med SqlDataSource1.Insert(). Men jag skulle vilja lägga in en kontroll på om det finns kontakt med databasen först och om det inte gör det så ska det skickas ett mail till mig så att jag får veta det. Anmälaren ska hamna på sidan Fel.aspx.
Om databaskopplingen fungerar som den ska, så ska inserten ske och ett bekräftelsemail gå till anmälaren och denne ska hamna på sidan Tack.aspx.
Väldigt tacksam över lite vägledning på det här! Jag skickar med min insert och mail-skickningskod.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If IsValid Then
SqlDataSource1.Insert()
Response.Redirect("Tack.aspx")

Dim errormail As New MailMessage()

errormail.From = New MailAddress("webform@min.se")
errormail.To.Add("minmail@min.se")

errormail.Subject = "Misslyckad anmälan"
errormail.Body = "Namn: " & Me.fornamn.Text & " " & Me.efternamn.Text & Environment.NewLine
errormail.Body = errormail.Body & "Ort: " & Me.ort.Text

Dim smtp As New SmtpClient("xxx.xx.x.xxx")
smtp.Send(errormail)
End Sub

/Jane


Svara

Sv: Kontrollera databaskoppling

Postades av 2008-03-11 18:09:21 - Benni Svensson

Hej Janne.
I det här läget så skulle jag köra en try abd catch.
<code>
try
{
//här lägger du in din insert
}
catch(Exceptionfel)
{
//någonting gick fel du kan skicka ett mail och tar du med fel(Exception) i ditt mail så får du veta orsaken
}
Jag hoppas att detta kan hjälpa dig.


Svara

Sv:Kontrollera databaskoppling

Postades av 2008-03-12 08:11:47 - Tomas Granlund

Bara för att förtydliga Bennis svar (hoppas du inte misstycker):

        If IsValid Then
            Try
                SqlDataSource1.Insert()
                Response.Redirect("Tack.aspx")
' ta som regel att vara specifik i fångandet av exceptions
            Catch ex As InvalidOperationException 
                Dim errormail As New MailMessage()

                errormail.From = New MailAddress("webform@min.se")
                errormail.To.Add("minmail@min.se")

                errormail.Subject = "Misslyckad anmälan"
                errormail.Body = "Namn: " & Me.fornamn.Text & " " & Me.efternamn.Text & Environment.NewLine
                errormail.Body = errormail.Body & "Ort: " & Me.ort.Text & Environment.NewLine
                errormail.body &= "Orsak: " & ex.Message

                Dim smtp As New SmtpClient("xxx.xx.x.xxx")
                smtp.Send(errormail)
                response.redirect("Fel.aspx")
            End Try
        End If


Svara

Sv: Kontrollera databaskoppling

Postades av 2008-03-12 09:56:17 - Jane Eriksson

Tack, jag behövde nog ett förtydligande.
Det här blev lite knepigt för först fungerade det jättebra, men så la jag till att det ska komma ett bekräftelsemail också om det är så att inserten gått bra. Efter det, så kommer det bara ett mail när inserten gått bra, men inte om den misslyckas. Jag kör mot en Access-databas, så det är ju lätt att kolla genom att sätta tabellen i designläge, men då kommer bara den "gula sidan" upp och felmeddelandet står där och inget felmail kommer. Raden med "SqlDataSource1.Insert()" är rödmärkt, så det är som om att det blir stopp där. Det här är när jag kör lokalt alltså. Om jag lägger upp det skarpt, så kommer jag till Fel.aspx, men inget felmail kommer då heller.
Förresten vad är det för skillnad på InvalidOperationException och Exception? Går det att förklara?

If IsValid Then
Try
SqlDataSource1.Insert()

Dim mail As New MailMessage()
mail.From = New MailAddress("webform@min.se")
mail.To.Add(Me.epost.Text)

mail.Subject = "Bekräftelse på anmälan till mailtestseminarier iis-prod"
mail.Body = "Namn: " & Me.fornamn.Text & " " & Me.efternamn.Text & Environment.NewLine
mail.Body = mail.Body & "Organisation: " & Me.organisation.Text & Environment.NewLine
mail.Body = mail.Body & "Ort: " & Me.ort.Text & Environment.NewLine
mail.Body = mail.Body & "Välkommen! "

Dim smtp As New SmtpClient("xxx.xx.x.xxx")
smtp.Send(mail)

Response.Redirect("Tack.aspx")

Catch ex As InvalidOperationException 'Exception
Dim errormail As New MailMessage()

errormail.From = New MailAddress("webform@min.se")
errormail.To.Add("min@min.se")

errormail.Subject = "Misslyckad anmälan"
errormail.Body = errormail.Body & "Ort: " & Me.ort.Text & Environment.NewLine
errormail.Body = errormail.Body & "Orsak: " & ex.Message

Dim smtp2 As New SmtpClient("xxx.xx.x.xxx")
smtp2.Send(errormail)

Response.Redirect("~/error/Fel.aspx")
End Try
End If

/Jane


Svara

Sv:Kontrollera databaskoppling

Postades av 2008-03-12 11:52:13 - Tomas Granlund

Anledningen att du när du kör lokalt fastnar på raden med "SqlDataSource1.Insert()" och att den markeras kan jag tänka mig är att ditt Visual Studio är inställt på breaka så fort ett Exception slängs i din kod -- minns inte riktigt hur/var man ställer in det, men om så är fallet borde det gå att fortsätta köra applikationen efter den breakat (borde finnas en blå play-knapp?).

Skillnaden mellan Exception och InvalidOperationException (eller godtycklig annan Exception) är att de senare alla ärver av Exception. Skriver man en Catch var As Exception kommer den fånga ALLA exceptions, oavsett vad den bakomliggande orsaken är -- vilket i regel inte är det man vill egentligen.
Istället bör man kika på vilka fel man kan tänkas råka ut för, och se till att parera dem på korrekt sätt

Låter märkligt att felmailet inte kommer fram -- du har inte möjlighet att kika i mailserverns logfil om det står nåt där?

Ex:

        Try
            Dim bar As Integer = 0
            Dim foo As Integer = CInt(1 / bar)
            Dim dbConn As New SqlClient.SqlConnection("minserver.com")
        Catch ex As Exception
            Console.WriteLine("Oj det gick inte att ansluta till databasen")
' felaktig slutsats
        End Try


Bättre ex:
        Try
            Dim bar As Integer = 0
            Dim foo As Integer = CInt(1 / bar)
            Dim dbConn As New SqlClient.SqlConnection("minserver.com")
        Catch ex As OverflowException
            Console.WriteLine("Oj det gick inte att dividera med noll (idag heller)")
        Catch ex As ArgumentException
            Console.WriteLine("Oj din connectionstring var ju inte rätt formaterad")
        Catch ex As SqlClient.SqlException
            Console.WriteLine("Oj SQLservern blev visst lite arg")
        End Try



Svara

Sv: Kontrollera databaskoppling

Postades av 2008-03-12 16:28:41 - Jane Eriksson

Hej!
Det är en webbapplikation jag har så när jag testkör kör jag ju i webbläsaren lokalt mha Visual Studios inbyggda webbserver. Det är Visual Studio 2005 jag har.
Det är när jag använder InvalidOperationException, som programmet stannar på
"SqlDataSource1.Insert()". Om jag använder bara Exception får jag errormailet ovasett om databasen fungerar eller inte. Om databasen fungerar står det som orsak: Tråden höll på att avbrytas.
Dessvärre har jag inte åtkomst till logfilen.
Ska man måste göra en separat connection till databasen före "SqlDataSource1.Insert()" och lägga in try-catch där, för det är ju enbart databaskontakten jag vill kolla särskilt? Och hur gör man det i så fall?
Det är så irriterande att det ska vara så krångligt att få till en sån här simpel grej. Känns som om jag ger upp med .net snart.
/Jane


Svara

Sv: Kontrollera databaskoppling

Postades av 2008-03-13 17:05:31 - Jane Eriksson

Nu har jag faktiskt löst det, men jag fick inte till det med InvalidOperationException, utan med Exception och jag var tvungen att flytta bort redirecten från Try-satsen och flytta den till finally. Så här ser det ut nu:

If IsValid Then
Try
SqlDataSource1.Insert()
Catch ex As Exception 'InvalidOperationException

Dim errormail As New MailMessage()

errormail.From = New MailAddress("webform@min.se")
errormail.To.Add("jag@min.se")

errormail.Subject = "Misslyckad anmälan till seminarier "
errormail.Body = errormail.Body & "Ort: " & Me.ort.Text & Environment.NewLine
errormail.Body = errormail.Body & "Orsak: " & ex.Message

Me.fel.Value = ex.Message

Dim smtp As New SmtpClient("xxx.xx.x.xxx")
smtp.Send(errormail)

Response.Redirect("~/error/Fel.aspx")
Finally
If Me.fel.Value = "" Then
Dim mail As New MailMessage()

mail.From = New MailAddress("webform@min.se")
mail.To.Add(Me.epost.Text)

mail.Subject = "Bekräftelse på anmälan till ..."
mail.Body = mail.Body & "Ort: " & Me.ort.Text & Environment.NewLine
mail.Body = mail.Body & "Välkommen! "

Dim smtp2 As New SmtpClient("xxx.xx.x.xxx")
smtp2.Send(mail)

Response.Redirect("Tack.aspx")
Else
Response.Redirect("~/error/Fel.aspx")
End If

End Try
End If

Vad tyck? Är det godkänt, eller?


Svara

Sv:Kontrollera databaskoppling

Postades av 2008-03-13 22:52:40 - Benni Svensson

Jag anser att det är så här det skall se ut.
Ett litet tips, använd dig av formateringstaggarna när du skriver in kod här på forumet så blir det mycket
lättare att läsa och tyda det.


Svara

Sv: Kontrollera databaskoppling

Postades av 2008-03-14 08:57:52 - Jane Eriksson

Så bra!
Ska försöka med formateringstaggarna nästa gång.
Tack för all hjälp


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
352
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies