Toon posts:

[ASP.NET/MySQL] System.InvalidCastException was thrown

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik loop echt zwaar te stoeien met ASP.NET maar hij vertikt het gewoon om records op te halen uit mijn MySQL database.

Ik heb een dns aangemaakt en alle onderdelen geinstalleerd (gelezen op asp.net forum) maar ik krijg iedere keer deze gare error:
code:
1
2
Exception Details: System.InvalidCastException: 
Exception of type System.InvalidCastException was thrown.


wat houdt dit in en hoe krijg ik het weg :+

mijn code is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ Page Language="VB" Debug="True" CompilerOptions=
'/R:"C:\Program Files\Microsoft.NET\Odbc.Net\Microsoft.Data.Odbc.dll"' %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="Microsoft.Data.ODBC" %>
<script runat="server">

'DATABASE CONNECTION
Dim strConn As String = "DSN=Begeer"
Dim objConn As New ODBCConnection(strConn)

Public Sub Page_Load (obj As Object, e As EventArgs)
Dim objCmd As New ODBCCommand ("SELECT * FROM klant")     
Dim objDA As New ODBCDataAdapter
Dim dvw As DataView
Dim ds As New DataSet

objDA.Fill( ds, "klant" )
dim dTable as DataTable = ds.Tables("klant")
dim CurrRows() as DataRow = dTable.Select
( Nothing, Nothing, DataViewRowState.CurrentRows)
dim I,J as integer
dim strOutput as String
        
For I = 0 to CurrRows.Length - 1
    For J = 0 to dTable.Columns.Count - 1
        strOutput = strOutput & dTable.Columns(J).ColumnName & " = " 
        & CurrRows(I)(J).ToString & "<br>"
    next
next
        
response.write( strOutput )
     
End Sub
</script>
<html>
<head>
</head>
<body>
</body>
</html>


(mix van code van asp.net en uit mijn ASP.NET in 21 dagen (DIIIIKKK :D))
Heeft iemand misschien een hele simpele voorbeeld code of ziet ie direct welke (vast n00bische) fout ik maak??

[edit: layout does liev]

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:44

gorgi_19

Kruimeltjes zijn weer op :9

Waarom gebruik je ODBC en niet OleDB eigenlijk?
En in welke regel zit de fout?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
doh soz, dat is wel handig om te vermelden idd :D

code:
1
2
3
4
5
6
7
8
9
Source Error: 


Line 14:    Dim ds As New DataSet
Line 15: 
Line 16:    objDA.Fill( ds, "klant" )
Line 17:    dim dTable as DataTable = ds.Tables("klant")
Line 18:    dim CurrRows() as DataRow = dTable.Select
                ( Nothing, Nothing, DataViewRowState.CurrentRows)


de error zit in line 16

ODBC is voor MySQL toch? tenminste dit stond in het voorbeeld op asp.net (deels dan)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

ODBC is universeel voor alle db's

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
maar kan je met oledb ook connect op een mysql server? (lukt mij niet) dat zou wel heel relaxed zijn, dan kan ik gewoon de voorbeelden uit het boek volgen, nu blijft het maar hannesen :(

Verwijderd

Je kunt ook een MySQL .NET native provider gebruiken voor .NET. Op het moment zijn er geloof ik twee nl.
http://www.einfodesigns.com/products.aspx en
http://sourceforge.net/projects/mysqlnet/

Verwijderd

Topicstarter
pfff nou ook in c# geeft ie dezelfde error:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<%@ Page Language="C#" Debug="true" %>
<%@ Import namespace = "System.Data"%>
<%@ Import namespace = "Microsoft.Data.Odbc"%>
<%@ Assembly Name = "Microsoft.Data.Odbc" %>

<html>
<script language="C#" runat="server">
    protected void Page_Load(Object sender, EventArgs e)
    {
      string mySQLConnStr = "driver={MySQL};";
      mySQLConnStr = mySQLConnStr + "server=localhost;";
      mySQLConnStr = mySQLConnStr + "uid=admin;";
      mySQLConnStr = mySQLConnStr + "pwd=**********;";
      mySQLConnStr = mySQLConnStr + "database=Begeer;";
      mySQLConnStr = mySQLConnStr + "OPTION=17923";
      /* Above is option 1, 2, 512, 1024, 16384  see mySQL
         manual for details.  But the key is 512 Pad char
         fields to full length.
      */
      OdbcConnection myConnection = new OdbcConnection
(mySQLConnStr);     
      string SQL = "select * from test";
      OdbcDataAdapter myCommand = new OdbcDataAdapter(SQL,
myConnection);
      DataSet ds = new DataSet();
      myCommand.Fill(ds, "test");
      MyDataGrid.DataSource=ds.Tables["test"].DefaultView;
      MyDataGrid.DataBind();
    }

</script>

<body>

  <h3><font face="Verdana">Simple Select to a DataGrid
Control</font></h3>

  <ASP:DataGrid id="MyDataGrid" runat="server"
    Width="700"
    BackColor="#ccccff"
    BorderColor="black"
    ShowFooter="false"
    CellPadding=3
    CellSpacing="0"
    Font-Name="Verdana"
    Font-Size="8pt"
    HeaderStyle-BackColor="#aaaadd"
    EnableViewState="false"
  />

</body>
</html>


error zelfde als boven maar nu op line 26
code:
1
2
3
4
5
Line 24: myConnection);
Line 25:       DataSet ds = new DataSet();
Line 26:       myCommand.Fill(ds, "test");
Line 27:       MyDataGrid.DataSource=ds.Tables["test"].DefaultView;
Line 28:       MyDataGrid.DataBind();


wat doe ik verkeerd, dat ik bij alle mogelijke manieren dezelfde error krijg?
moet wel iets heel stoms zijn, want geen een gevonden script vind dat ik het goed doe :(

  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
Ik heb het wel voor elkaar gekregen maar dan met een ODBC driver. op http://www.mysql.com/downloads/index.html kan je MyODBC downloaden. Na installatie van de MyODBC API moet je een zogenaamde Data Source Name (DSN) aanmaken. Hoe dit moet staat op: http://www.mysql.com/products/myodbc/faq.html#DSN_on_Windows

Verder staan er een heleboel voorbeelden op www.mysql.com hoe je hiermee verder aan de slag kunt. Mocht het niet lukken dan hoor ik het wel. Kan ik even kijken hoe ik dat ook alweer voor elkaar heb gekregen. Is alweer even geleden.

Edit: Ik neem aan dat je MySQL op een Windows systeem draait. Zo niet dan moet je op www.mysql.com maar kijken hoe dat verder in zijn werk gaat.

Edit2: Sorry, ik zie dat je al met ODBC aan het spelen bent... Niet goed gelezen

Verwijderd

Topicstarter
skiwi dat heb ik allemaal gedaan (http://www.asp.net/Forums...x?tabindex=1&PostID=14647) netjes by the rules

:'(

  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
ASP.NET is currently down for maintenance :(

Maar goed, heb je een user dsn of een system dsn aangemaakt?
Ik had dus eerste een user dsn aangemaakt en kreeg het ook niet voor elkaar. Daarna een system dsn gebruikt en dat werkte direct. Weet alleen niet hoe het beveiligings-technisch in elkaar zit

Verwijderd

Topicstarter
ik heb een system dns aangemaakt, die heet Begeer.
Ik heb hem getest en hij zei dat de connectie prima in orde was :)

  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
Moet je je ODBCConnection niet openen, je commando uitvoeren en daarna je connectie weer sluiten? Ik heb helaas de code die ik gebruik niet bij de hand.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
public void CreateMyOdbcDataReader(string mySelectQuery,string myConnectionString) 
{
   OdbcConnection myConnection = new OdbcConnection(myConnectionString);
   OdbcCommand myCommand = new OdbcCommand(mySelectQuery, myConnection);
   myCommand.Connection.Open();
   OdbcDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
   while(myReader.Read()) 
   {
      Console.WriteLine(myReader.GetString(0));
   }
   myReader.Close();
   myConnection.Close();
}

Voorbeeld komt uit de ODBC .NET Data Provider Reference. Ik dacht dat die meegeleverd werd met MySQL (weet ik niet zeker).

Verwijderd

Topicstarter
nog even een updateje voor degene die met hetzelfde zit/zat...
dit kwam dus door het NIET goed afsluiten van IIS, eigen stomme schuld

oplossing:
ALLEZ (.net, sdk, odbc alles) uninstallen en helemaal netjes alles afsluiten (alleen het stoppen van IIS is dus niet genoeg :P)
Pagina: 1