Daten aus sdf-Datenbank lassen sich nicht auslesen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von rs90.

    Daten aus sdf-Datenbank lassen sich nicht auslesen

    Hallo Community,

    ich habe ein kleines Problem mit meiner Datenbank und zwar kann ich über vb.net aus allen Tabellen die Daten auslesen ausser aus einer und leider kann ich keinen Grund finden warum es nicht klappt. Vom Aufbau her sind sie gleich aber bei der Tabelle bekomme ich immer diesen Fehler:
    Das Objekt des Typs "System.Int32" kann nicht in Typ "System.String" umgewandelt werden.

    Der Code sieht folgendermaßen aus:

    VB.NET-Quellcode

    1. Dim db As New Database("Data Source=C:\Dokumente und Einstellungen\VM User\Eigene Dateien\Dropbox\Development\Database.sdf")
    2. For Each x As OldMovie In OldMovies
    3. Dim d = From t In db.Director() Where t.DirectorName = x.Director
    4. Dim m = From t In db.Movie() Where t.MovieName = x.Name
    5. debugSW.WriteLine(m.First().MovieID & " " & d.First().DirectorID)
    6. debugSW.Flush()
    7. debugSW.Close()
    8. Next

    Der Fehler tritt in der 6.ten Zeile auf und betrifft das "m.First().MovieID", lasse ich das weg kommt kein Fehler.
    Die Struktur der Tabelle sieht so aus:



    Ich hoffe mir kann da jemand helfen da ich an der Stelle schon länger feststecke und nicht weiter komme.
    Nein das geht leider garnicht. Hier mal der ganze Code, vielleicht hilft das weiter:

    VB.NET-Quellcode

    1. Imports System.Data.SqlServerCe
    2. Imports System.Text
    3. Imports System.Xml
    4. Imports System.Data.Linq
    5. Imports System.IO
    6. Public Class Form1
    7. Dim OldMovies As New List(Of OldMovie)
    8. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    9. Dim db As New Database("Data Source=C:\Dokumente und Einstellungen\VM User\Eigene Dateien\Dropbox\Development\Database.sdf")
    10. LoadMoviesFromDatabase("C:\Dokumente und Einstellungen\VM User\Eigene Dateien\Dropbox\Development\Database\Database.xml")
    11. Dim debugSW As New StreamWriter("C:\Dokumente und Einstellungen\VM User\Desktop\Database-Debug.txt", False)
    12. For Each x As OldMovie In OldMovies
    13. Dim d = From t In db.Director() Where t.DirectorName = x.Director
    14. Dim m = From t In db.Movie() Where t.MovieName = x.Name
    15. debugSW.WriteLine(m.First().MovieID & " " & d.First().DirectorID)
    16. debugSW.Flush()
    17. debugSW.Close()
    18. Next
    19. End Sub
    20. Private Sub LoadMoviesFromDatabase(ByVal DatabasePath As String)
    21. OldMovies.Clear()
    22. Dim Database As New XmlDocument
    23. Database.Load(DatabasePath)
    24. For Each MovieInDatabase As XmlNode In Database.SelectNodes("ProgramData/Movies/Movie")
    25. Dim Actors As New Dictionary(Of String, String)
    26. Dim StoryLine As New StringBuilder
    27. For Each x As XmlNode In Database.SelectNodes("ProgramData/Movies/Movie[@Name=""" & MovieInDatabase.Attributes("Name").Value & """]/Actors/Actor")
    28. If Not x.Attributes("Name").Value = "" Then
    29. Actors.Add(x.Attributes("Name").Value, x.Attributes("As").Value)
    30. End If
    31. Next
    32. StoryLine.Append(Database.SelectSingleNode("ProgramData/Movies/Movie[@Name=""" & MovieInDatabase.Attributes("Name").Value & """]/StoryLine").InnerText)
    33. Dim MovieEntry As New OldMovie With {.Name = MovieInDatabase.Attributes("Name").Value, _
    34. .FileName = MovieInDatabase.Attributes("FileName").Value, _
    35. .IsViewed = MovieInDatabase.Attributes("IsViewed").Value, _
    36. .Cover = IIf(Not String.IsNullOrEmpty(MovieInDatabase.Attributes("Cover").Value), MovieInDatabase.Attributes("Cover").Value, "No Picture.png"), _
    37. .Director = MovieInDatabase.Item("Director").InnerText, _
    38. .ReleaseDate = MovieInDatabase.Item("ReleaseDate").InnerText, _
    39. .Genre = MovieInDatabase.Item("Genre").InnerText, _
    40. .Runtime = MovieInDatabase.Item("Runtime").InnerText, _
    41. .Actors = Actors, _
    42. .StoryLine = StoryLine}
    43. OldMovies.Add(MovieEntry)
    44. Next
    45. OldMovies.Sort()
    46. End Sub
    47. End Class
    48. Public Class OldMovie
    49. Implements IComparable(Of OldMovie)
    50. Public Name As String
    51. Public FileName As String
    52. Public IsViewed As String
    53. Public Cover As String
    54. Public Director As String
    55. Public ReleaseDate As String
    56. Public Genre As String
    57. Public Runtime As String
    58. Public Actors As Dictionary(Of String, String)
    59. Public StoryLine As StringBuilder
    60. Public Function CompareTo(ByVal other As OldMovie) As Integer Implements System.IComparable(Of OldMovie).CompareTo
    61. Return String.Compare(Me.Name, other.Name)
    62. End Function
    63. End Class


    In die Liste "OldMovies" wird eine xml-Datei eingelesen die zur Zeit meine Filmdatenbank enthält und nun halt in eine richtige Datenbank soll.