Avatar billede page Nybegynder
07. juni 2008 - 19:31 Der er 12 kommentarer og
1 løsning

Codebehind og MySQL

Hej,

Jeg har ingen problemer med at at hente fra min MySQL database når jeg ikke benytter mig af Codebehind.

Jeg kunne dog godt tænke mig at jeg fik database kaldet til at ligge i min codebehind fil, hvis det altså kan lade sig gøre, men jeg får følgende fejl:

Compiler Error Message: BC30451: Name 'EtNavn' is not declared.
Source Error:

Line 44:     Dim reader As MySqlDataReader = cmd.ExecuteReader()
Line 45:    
Line 46:     EtNavn.DataSource=reader
Line 47:     EtNavn.DataBind()

Her er min codebehind kode:

Imports System.Web
Imports system.data.oledb
Imports MySql.Data.MySqlClient
Imports System.IO
Imports System.Data.SqlClient
Imports System.Web.UI.Page

Public Class WebForm2
Sub Page_Load(Sender As Object,E As EventArgs)
    BindData()
End Sub

Sub BindData()
    '1. Create a connection
      Dim conn As New MySql.Data.MySqlClient.MySqlConnection
    Dim myConnectionString as String

    '2. Create the command object, passing in the SQL string
    myConnectionString = "server=db.mitdomæne.dk;" _
                    & "uid=XX;" _
                    & "pwd=X;" _
                    & "database=XX;"
   
    Try
    conn.ConnectionString = myConnectionString
    conn.Open()

    'Set the datagrid's datasource to the datareader and databind
      Dim sql As String = "SELECT * FROM tbltest"

    Dim cmd As MySqlCommand = new MySqlCommand(sql, conn)
   
    Dim reader As MySqlDataReader = cmd.ExecuteReader()
   
    EtNavn.DataSource=reader
    EtNavn.DataBind()
   
    reader.Close()
                           
    conn.Close()   
    Catch ex As MySql.Data.MySqlClient.MySqlException
    response.write (ex.Message)
    End Try
         
  End Sub
End Class


"EtNavn" bruges til en DataList på min side.

Håber der er nogen herinde der ligger inde med et svar :)

mvh
Avatar billede erikjacobsen Ekspert
07. juni 2008 - 19:48 #1
En codebehind fil-klasse skal vel nedarve fra System.Web.UI.Page
Avatar billede page Nybegynder
07. juni 2008 - 20:58 #2
ja, det havde jeg også i starten som Inherits System.Web.UI.Page lige oprettelsen af Public Class WebForm2. Men tænkte den kunne smides op i starten som Imports System.Web.UI.Page.
Avatar billede erikjacobsen Ekspert
07. juni 2008 - 21:35 #3
Det er ikke det samme.
Avatar billede page Nybegynder
07. juni 2008 - 22:23 #4
Hmm ok. Men det gør ingen forskel på om jeg har nedarver den eller importere den i henhold til den fejl jeg får.

Lige for et indskudt spørgsmål, hvad er så forskellen på at importere og nedarve?
Avatar billede erikjacobsen Ekspert
07. juni 2008 - 22:29 #5
Du siger "Imports System.Web.UI" for at slippe for at skrive "System.Web.UI.Page", men kan nøjes med "Page" - intet andet. Man kan helt droppe sine imports, hvis man konsekvent skriver fuldt kvalificerede navne.

Men så er der jo nok noget andet galt. Hvad om vi også så din .aspx-side?
Avatar billede page Nybegynder
07. juni 2008 - 22:29 #6
Jeg har nu gjort det at jeg har forsøgt med det her:

...
Public Class WebForm2
    Inherits System.Web.UI.Page
    Protected WithEvents EtNavn As System.Web.UI.WebControls.DataList

Sub Page_Load(Sender As Object,E As EventArgs)
    BindData()
End Sub
...

Hvilket betyder at jeg nu ikke får nogen fejl. Jeg må dog blankt erkende at jeg ikke aner hvad det betyder. Jeg har bare taget det fra et eksempel på ASP101
Avatar billede page Nybegynder
07. juni 2008 - 22:31 #7
Min .aspx side ser således ud:

<%@ Page Language="vb" Debug="true" AutoEventWireup="false" Src="WebForm2.aspx.vb" Inherits="WebForm2"%>
<html>
  <head>
    <title>WebForm2 Code-Behind Test</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:Button id="Button1" runat="server" Text="Button">
      </asp:Button>
      <br />
      <br />
      <asp:Label id="Label1" runat="server">Label</asp:Label>
      <asp:DataList id="EtNavn" runat="server">
        <ItemTemplate>
        <a href="VisQuest.aspx?id=<%#Container.DataItem("id")%>" title="Sitemap"><%#Container.DataItem("Overskrift")%></a>
        </ItemTemplate>
    </asp:DataList>
    </form>
  </body>
</html>
Avatar billede erikjacobsen Ekspert
07. juni 2008 - 23:46 #8
Ja, hvis du skriver det hele manuelt, notesblok-agtigt, så skal du angive en variabel som placeholder (protected), og formentlig også:

  Public Sub Page_Load(Sender As Object,E As EventArgs) Handles Me.Load

Bruger man en eller anden udgave af Visual Studio sker det automatisk, og rigtig meget af det kode du ser på nettet forventer brug af Visual Studio.
Avatar billede page Nybegynder
08. juni 2008 - 00:03 #9
Super, det virker nu..

Jeg er som sagt først nu begyndt at bruge codebehind, og jeg bruge ikke VS eller andet. Det virker lidt besynderligt at der er forskel på manuel og automatisk kode, og hvordan serveren gennemskuer forskellen virker endnu mere besynderligt. :)

Findes der et sted hvor man kan se en liste over mulighederne?
Jeg har fundet frem til at bruge: Handles Button1.Click - i forbindelse med en knap event.

Tak for hjælpen.
Avatar billede erikjacobsen Ekspert
08. juni 2008 - 00:14 #10
Det oversættes ned i en DLL, hvor alle sammenhængene ligger, når man laver en Publish i VS. Men ja, en besynderlighed, der dog nok giver et vist salg af VS. Der findes nu også en gratis "Express" udgave, som kan hjælpe.
Avatar billede page Nybegynder
08. juni 2008 - 00:31 #11
Jeg har forsøgt mig med den gratis udgave, men den var ikke synderligt glad for MySQL'en, samtidigt med at det var jævnt tungt at danse med. Min gamle pc var i hvertfald ikke klar på en omgang samba.

Men endnu engang tak for hjælpen. Hvis du vil have point så smid et svar.
Avatar billede erikjacobsen Ekspert
08. juni 2008 - 00:36 #12
Jeg samler slet ikke på point, tak.
Avatar billede page Nybegynder
08. juni 2008 - 00:49 #13
Selv tak i så fald.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester