Ho visto in questo forum (e pure in altri) che ci sono diversi problemi a dover gestire database mySQL con ASP.NET,c'è chi utilizza ADO chi ODBC, in ogni caso la situazione è molto complessa (almeno per me).
Dopo giorni di ricerche e di tentativi vani, ho trovato un provider ADO.NET per mySQL ( http://crlab.com/mysqlnet/ ), a me è funzionato subito e non l'ho trovato molto complesso.

Posto un po' di codice (tratto da ASP.NET guida completa di Apogeo e debitamente modificato), sperando che possa risparmiare un po' di fatica a qualcuno di voi.

Per far funzionare l'esempio basta creare un database mySQL equivalente a quello usato dalla guida di Apogeo, lo potete scricare da qui ( http://www.apogeonline.com/libri/009.../databases.zip ), si chiama "banking.mdb".
Bisogna ovviamente registrare i nuovi componenti e usare le classi per mysql, comunque nell'esempio c'è tutto quello che serve.

codice:
<%@ Page CompilerOptions=""/R:"C:\Programmi\CoreLab\MySQLDirect.NET\CoreLab.MySql.dll""" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="CoreLab.MySql" %>
<script runat="server">
    
    
    Dim conn As New MySqlConnection("User=root; pwd=mypassword; Host=localhost; Port=3306; Database=banking")
    
    sub Page_Load(obj as Object, e as EventArgs)
       if Not Page.IsPostBack then
          FillDataGrid()
       end if
    end sub
    
    sub Submit(obj as object, e as eventargs)

       dim i, j as integer
       dim params(7) as string
       dim strText as string
       dim blnGo as boolean = true
    
       j = 0
    
       for i = 0 to AddPanel.Controls.Count - 1
          if AddPanel.controls(i).GetType Is GetType(TextBox) then
             strText = Ctype(AddPanel.Controls(i), TextBox).Text
             if strText <> "" then
                params(j) = strText
             else
                blnGo = false
                lblMessage.Text = lblMessage.Text & "You forgot to enter " & _
                   "a value for " & AddPanel.Controls(i).ID & "

"
                lblMessage.Style("ForeColor") = "Red"
             end if
             j = j + 1
          end if
       next
    
       if not blnGo then
          exit sub
       end if
    
       dim strSQL as string = "INSERT INTO tblUsers " & _
          "(FirstName, LastName, Address, City, State, " & _
           "Zip, Phone) VALUES (" & _
          "'" & params(0) & "'," & _
          "'" & params(1) & "'," & _
          "'" & params(2) & "'," & _
          "'" & params(3) & "'," & _
          "'" & params(4) & "'," & _
          "'" & params(5) & "'," & _
          "'" & params(6) & "')"
    
       ExecuteStatement(strSQL)
    
       FillDataGrid()
    end sub
    
    sub dgData_Edit(obj as object, e as DataGridCommandEventArgs)
       FillDataGrid(e.Item.ItemIndex)
    end sub
    
    sub dgData_Delete(obj as object, e as DataGridCommandEventArgs)
       dim strSQL as string = "DELETE FROM tblUsers " & _
          "WHERE UserID = " & e.Item.ItemIndex + 1
    
       ExecuteStatement(strSQL)
    
       FillDataGrid()
    end sub
    
    sub dgData_Update(obj as object, e as DataGridCommandEventArgs)
       if UpdateDataStore(e) then
          FillDataGrid(-1)
       end if
    end sub
    
    sub dgData_Cancel(obj as object, e as DataGridCommandEventArgs)
       FillDataGrid(-1)
    end sub
    
    sub dgData_PageIndexChanged(obj as Object, e as DataGridPageChangedEventArgs)
       dgData.DataBind()
    end sub
    
    function UpdateDataStore(e as DataGridCommandEventArgs) _
       as boolean
    
       dim i,j as integer
       dim params(7) as string
       dim strText as string
       dim blnGo as boolean = true
    
       j = 0
    
       for i = 1 to e.Item.Cells.Count - 3
          strText = Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
          if strText <> "" then
             params(j) = strText
             j = j + 1
          else
             blnGo = false
             lblMessage.Text = lblMessage.Text & "You forgot to enter " & _
                "a value

"
          end if
       next
    
       if not blnGo then
          return false
          exit function
       end if
    
       dim strSQL as string = "UPDATE tblUsers SET " & _
          "FirstName = '" & params(0) & "'," & _
          "LastName = '" & params(1) & "'," & _
          "Address = '" & params(2) & "'," & _
          "City = '" & params(3) & "'," & _
          "State = '" & params(4) & "'," & _
          "Zip = '" & params(5) & "'," & _
          "Phone = '" & params(6) & "'" & _
          " WHERE UserID = " & Ctype(e.Item.Cells(0).Controls(1), Label).text
    
       ExecuteStatement(strSQL)
       return blnGo
    end function
    
    sub FillDataGrid(Optional EditIndex as integer=-1)

       dim objCmd as new mysqlCommand _
          ("select * from tblUsers", Conn)
       dim objReader as mysqlDataReader
    
       try
          objCmd.Connection.Open()
          objReader = objCmd.ExecuteReader()
       catch ex as Exception
          lblMessage.Text = "Error retrieving from the database. Please" & _
             " make sure all values are correctly input"
       end try
    
       dgData.DataSource = objReader
       if not EditIndex.Equals(Nothing) then
          dgData.EditItemIndex = EditIndex
       end if
    
       dgData.DataBind()
    
       objReader.Close
       objCmd.Connection.Close()
    
    end sub
    
    function ExecuteStatement(strSQL)
       dim objCmd as new mysqlCommand(strSQL, Conn)
    
       try
          objCmd.Connection.Open()
          objCmd.ExecuteNonQuery()
       catch ex as Exception
          lblMessage.Text = "Error updating the database. Please" & _
             " make sure all values are correctly input"
       end try
    
       objCmd.Connection.Close()
    end function

</script>
<html>
<head>
</head>
<body>
    <asp:Label id="lblMessage" runat="server"></asp:Label>
    <form runat="server">
        <asp:DataGrid id="dgData" runat="server" BorderColor="black" GridLines="Vertical" cellpadding="4" cellspacing="0" width="100%" AutoGenerateColumns="False" OnDeleteCommand="dgData_Delete" OnEditCommand="dgData_Edit" OnCancelCommand="dgData_Cancel" OnUpdateCommand="dgData_Update" OnPageIndexChanged="dgData_PageIndexChanged">
            <Columns>
                <asp:TemplateColumn HeaderText="ID">
                    <ItemTemplate>
                        <asp:Label id="Name" runat="server" Text='<%# Container.DataItem("UserID") %>' />
                    </ItemTemplate>
                </asp:TemplateColumn>
                <asp:BoundColumn HeaderText="FirstName" DataField="FirstName" />
                <asp:BoundColumn HeaderText="LastName" DataField="LastName" />
                <asp:BoundColumn HeaderText="Address" DataField="Address" />
                <asp:BoundColumn HeaderText="City" DataField="City" />
                <asp:BoundColumn HeaderText="State" DataField="State" />
                <asp:BoundColumn HeaderText="Zip" DataField="Zip" />
                <asp:BoundColumn HeaderText="Phone" DataField="Phone" />
                <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" HeaderText="Edit" />
                <asp:ButtonColumn HeaderText="" text="Delete" CommandName="delete" />
            </Columns>
        </asp:DataGrid>
        


            <asp:Panel id="AddPanel" runat="server">
                <table>
                    <tbody>
                        <tr>
                            <td valign="top" width="100">
                                First and last name: 
                            </td>
                            <td valign="top" width="300">
                                <asp:TextBox id="tbFName" runat="server"></asp:TextBox>
                                <asp:TextBox id="tbLName" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top">
                                Address: 
                            </td>
                            <td valign="top">
                                <asp:TextBox id="tbAddress" runat="server"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top">
                                City, State, ZIP: 
                            </td>
                            <td valign="top">
                                <asp:TextBox id="tbCity" runat="server"></asp:TextBox>
                                , 
                                <asp:TextBox id="tbState" runat="server" size="2"></asp:TextBox>
                                 
                                <asp:TextBox id="tbZIP" runat="server" size="5"></asp:TextBox>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top">
                                Phone: 
                            </td>
                            <td valign="top">
                                <asp:TextBox id="tbPhone" runat="server" size="11"></asp:TextBox>
                                

</p>
                            </td>
                        </tr>
                        <tr>
                            <td valign="top" align="right" colspan="2">
                                <asp:Button id="btSubmit" onclick="Submit" runat="server" text="Add"></asp:Button>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </asp:Panel>
        </p>
    </form>
</body>
</html>