Datenbankabfrage mit ByteFX mySQL ?

Birk

Grünschnabel
Hallo,

ich suche zur Zeit nach einer Möglichkeit möglichst einfach an die Daten meiner mySQL Datenbank zu kommen.
Der Quellcode sieht zur Zeit so aus : (Codebehind Datei, HTML Seite gibt nur den String aus)

Code:
Imports ByteFX.Data.MySQLClient
Imports System.Web.UI.WebControls
Imports System.Data

Namespace menuleiste.aspnet.vb

Public Class menuleiste

Inherits System.Web.UI.Page
Protected WithEvents test2 As Label
Dim s_name As String = ""

	Private Sub Page_Load( _
                    ByVal sender As System.Object, _
                    ByVal e As System.EventArgs _
        	              ) Handles MyBase.Load
	
	If Session("Username") = "" Then 
		Response.Redirect("index.aspx",True)
	End If
	
	Dim strServer 	As String = "Server=localhost;"
        Dim StrUsername As String = "UID=[***];"
        Dim StrPassword As String = "PWD=[***];"
        Dim strDatabase As String = "DATABASE=[***];"
        Dim strComplete As String = strServer & strUsername & strPassword & strDatabase
	Dim objConn As NEW MySQLConnection
	    objConn.ConnectionString = strComplete	
	    
	Try
		objConn.Open()
		
		Dim sqlCommand As String
		    sqlCommand = "Select Username,Sprache From  User WHERE Username = '"
		    sqlCommand &= Session("Username")
		    sqlCommand &= "'"
		    
		Dim adapter As New MySqlDataAdapter()
    		    adapter.SelectCommand = new MySqlCommand(sqlCommand, objConn)
    		Dim mydataSet As New dataSet
    		adapter.Fill(mydataSet,"Username")
    		
    		Dim myTable As DataTable
    		myTable = mydataset.Tables
    		
    		Dim s_name As String = ""
    		Dim r As DataRow
    		
    		For EACH r in myTable.Rows
    			s_name &= r.Item("Username")
    		Next
    		    			
		Catch ex As MySQLException
		test2.Text = ex.Message
		
		Finally
		End Try    
	    

	test2.Text &= "hahaha"
	test2.Text &= s_name
	
	End Sub
End Class
End Namespace

Leider bekomme ich beim Ausführen dann folgende Fehlermeldung :

Compiler Error Message: BC30311: Value of type 'System.Data.DataTableCollection' cannot be converted to 'System.Data.DataTable'.

Diese bezieht sich auf : Line 44: myTable = mydataset.Tables

Wie kann ich diesen Fehler beheben und gibt es einfachere Methoden um an den Inhalt der Datenbank zu gelangen um mit den Inhalten der DB dann zu arbeiten ?

Danke, Birk
 
Du hast den Fehler doch ganz genau vor dir:
Code:
Dim myTable As DataTable
myTable = mydataset.Tables
du lässt dir eine Collection aller Tables ausgeben und versuchst, diese in ein Table-Objekt zu speichern...

Wie du hier in der MSDN Library nachsehen kannst, solltest du es also so machen:
Code:
Dim myTable As DataTable
myTable = mydataset.Tables["Username"]
,bzw:
Code:
Dim myTable As DataTable
myTable = mydataset.Tables[0]

Es zwei Wege auf eine Datenbank zuzugreifen.
Der zweite ginge über MySqlConnection, SqlCommand und evtl. SqlDataReader.
Mit diesem kannst du relativ einfach einzelne Abfragen oder Inserts, Updates direkt auf der Datenbank ausführen, während dein Weg immer erst das DataSet aktualisiert und du dies auf "extra Befehl" mit der DB abgleicht.
Kommt also immer drauf an, was du machen willst...
 

Neue Beiträge

Zurück