Announcement

Collapse
No announcement yet.

SQL Server daten in VB 2008 einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Server daten in VB 2008 einlesen

    Hallo,

    habe ein Problem in MS Visual Basic 2008 Daten von MS SQL Server 2005 einzulesen.
    Hier mal der Code wie ich es gemacht habe und wie es auch teils funktioniert.

    Mein Problem ist wenn in der SQL Tabelle „MyTable“ in der Spalte „XId“ eine “Guid-ID“ (z.B: b9abadab-da52-4401-a33d-783f72f1d3d5 ) steht, dass dann die Fehlermeldung „Die angegebene Umwandlung ist ungültig.“ kommt.


    Code:
      Dim con As New SqlClient.SqlConnection
            Dim cmd As New SqlClient.SqlCommand
            Dim reader As SqlClient.SqlDataReader
            Dim returnValue As SqlTypes.SqlString
    
    
            Dim varServer, varDatabase, varUser, varPwd As String
    
    
              con.ConnectionString = _
                        "Password=" & varPwd & _
                        ";Persist Security Info=True" & _
                        ";User ID=" & varUser & _
                        ";Initial Catalog=" & varDatabase & _
                        ";Data Source=" & varServer & ";"
              cmd.Connection = con
    
    
              Try
                cmd.CommandText = "select * from MyTable where XNamen = " & txtName.Text
                con.Open()
    
                reader = cmd.ExecuteReader()
                reader.Read()
    
                returnValue = reader("XId")
    
                reader.Close()
                con.Close()
              Catch ex As Exception
                MsgBox(ex.Message)
              End Try
    
          End If
        End If
      End Sub
    Vielleicht kann mir ja jemand weiter helfen.

    Gruß patrick

  • #2
    Hallo Patrick,

    wie kommst du auf SqlTypes.SqlString? Das ist ein spezieller String auf der DB-Seite. Warum benutzt du nicht SqlDbType.UniqueIdentifier oder Guid? Denn das letzte ist auf .NET-Seite der passende Datentyp.

    Außerdem muss bei reader das Ergebnis konvertiert werden mit einer passenden CType-Funktion. Oder (besser) du nimmst gleich die richtige SqlDataReader.GetGuid-Methode.

    Gruß Jürgen

    Nachtrag: Noch ein paar Anmerkungen.
    1. Eine DbConnection ist nach Gebrauch nicht nur zu schließen, sondern mit Dispose aufzulösen. Damit das vernünftig läuft, packt man sie am besten in einen Using-Block.
    2. Wenn du sowieso nur einen Wert haben willst, dann schreibe den Sql-Befehl so, dass er nur einen Wert liefert, und benutze ExecuteScalar.
    3. Ein Sql-String sollte niemals (NIEMALS!) als String-Verknüpfung erzeugt werden; benutze immer Parameter. Das wird u.a. einen Fehler, der in deinem Code noch steckt, verhindern.

    Comment

    Working...
    X