Har haft lite annat att göra ett tag så har inte kodat så mycket, så när jag satte mig idag så var det ett problem jag fastnad vid... Så var det det vanliga då ja... Jag förstår inte, det är väl perfekt om man kan skicka med en koddump som är kort och koncis så att man återskapa problemet. Viss det är väl bra med en stacktrace men det är ofta svårt att tyda någonting ur den om man inte har källkoden. Tack Allan funkade fint! Det "rätta" svaret borde väl annars varaspecified cast.. dataset + mysql
Felmeddelandet är: Specified cast is not valid.
Kod utdrag från databas klasserna:
<code>Public Class DataAccess
'Write the database type in web.config: myssql / mysql / access
Private strCnnDBType As String = ConfigurationSettings.AppSettings("CnnDBType")
Private strCnnString As String = ConfigurationSettings.AppSettings("CnnString")
Private strCnnMail as String = ConfigurationSettings.AppSettings("CnnMail") ' True = mail send
' Connection properties etc
Private cmdSqlCommand As IDbCommand
Private objDataAdapter As IDbDataAdapter
Private objCnn As IdbConnection
' Function for select right DB
Function setDBType()
Select Case strCnnDBType
Case "Mssql"
objCnn = New SqlConnection(strCnnString)
objDataAdapter = New SqlDataAdapter()
cmdSqlCommand = New SqlCommand()
Case "Mysql"
objCnn = New OdbcConnection(strCnnString)
objDataAdapter = New OdbcDataAdapter()
cmdSqlCommand = New OdbcCommand()
Case "Access"
objCnn = New OledbConnection(strCnnString)
objDataAdapter = New OledbDataAdapter()
cmdSqlCommand = New OledbCommand()
Case Else
_ThrowError("FEL: Databastypen är felaktig, kontrollera web.config")
End Select
End Function
Function CreateCommand(SqlStatement as String)
SqlStatement = SqlStatement.Replace("'","")
Dim SqlCommand as New OdbcCommand(SqlStatement,objCnn)
Return SqlCommand
End Function
' *****************************************
' Return data by a DataSet()
' *****************************************
Function GetDataSet(SqlStatement As String)
SetDbType()
Try
Dim objDataSet as New DataSet()
objCnn.Open()
objDataAdapter.SelectCommand = CreateCommand(SqlStatement)
objDataAdapter.Fill(objDataSet)
Return objDataSet
Catch Exp as SqlException
Throw exp
Finally
objCnn.Close()
End Try
End Function
</code>
och sen i klassen som anropar...
<code>
Public Class bdBook 'CMS BusinessData
Inherits DataAccess
Public Function aa()
Dim strSql as String = "Select * from tbl_admin"
Return GetDataSet(strSql)
End Function
End Class
Public NotInheritable Class dbBook ' Business Layer
Public Shared Function Test()
Dim objData as New bdBook
Return (objData.aa())
End Function
End Class
</code>
och sen i aspx filen
<code>
Sub Page_Load(obj as Object, e as EventArgs)
Dim ds As DataSet()
ds = dbBook.Test
End Sub
</code>
Har suttit med detta hela dagen... *river håret*
red/ jag vet att CreateCommand() inte är 100%-ig då databasen inte väljs "dynamsikt " där...Sv: specified cast.. dataset + mysql
1. Skicka inte en koddump för hela ditt projekt!
2. Skicka med felmedelandet. INKLUSIVE Stacktrace eftersom den t ex innehåller exakt vilken rad som felet uppstår.
(3. Skicka okså med en egen teori om du har någon.)
Kanske någon svarar i alla fall men jag kan garantera dig att det är färre svar vid din uppställning.
::::::::::::::::Efterinlägg::::::::::::::::::::::::::::::::
Efter att ha tagit in din kod i VS så kunde jag konstatera en intressant sak , som kanske är till hjälp; Du gör ingen synlig CAST någonstans i din kod du givit här.
//Mikael.NETSv: specified cast.. dataset + mysql
Nåväl, ditt problem är ganska enkelt. Du har glömt att deklarera ditt dataset med As New i den anropande koden. Alltså:
Dim ds As New DataSet()
ds = dbBook.Test
istf:
Dim ds As DataSet()
ds = dbBook.Test
/AllanSv: specified cast.. dataset + mysql
Dim ds As DataSet ' inga ()
M.Sand
1. Jag har inte skickat en koddump för hela projektet
2. Felmeddelandet står högst upp. Glömde tydligen att få med radnr. Ok ingen stacktrace med, men ok jag vet inte om detta skulle ha hjälpt:
<code>
[InvalidCastException: Specified cast is not valid.]
ASP.testdatabase_aspx.Page_Load(Object obj, EventArgs e) in C:\Inetpub\wwwroot\Diesys\Blandat\Complete dbcode\testdatabase.aspx:10
System.Web.UI.Control.OnLoad(EventArgs e) +55
System.Web.UI.Control.LoadRecursive() +21
System.Web.UI.Page.ProcessRequestMain() +724
</code>
3. Har jag gjort, dvs ingenting!
:) Slutet gott allting gott.