Avatar billede madeindk Nybegynder
28. december 2006 - 01:50 Der er 8 kommentarer og
1 løsning

Forbindelse til MySQL

Hej eksperter! Jeg er lige startet med ASP.NET, ved indtil videre ikke så meget om det - så bær lidt over med mig :-)

Nu har jeg så fået lavet min Default.aspx fil, men nu kommer mit problem så, at lave forbindelse til en MySQL database. Hvordan gør det? Indtil videre har jeg lavet en class i min App_Data mappe, der hedder mysql.cs - i den har jeg fundet følgende til MySQL:

using System;
using System.Data;
using ByteFX.Data.MySqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        MySqlConnection con = new MySqlConnection("Database=;Data Source=;User Id=;Password=");
        con.Open();
        MySqlCommand sel = new MySqlCommand("SELECT * FROM T1", con);
        MySqlDataReader rdr = sel.ExecuteReader();
        while (rdr.Read())
        {
            Console.WriteLine(rdr[0] + " " + rdr[1]);
        }
        rdr.Close();
        con.Close();
    }
}

Det lader også til at fungere ok - den kommer ihvertfald ikke med fejl kan man sige. Men hvordan i alverden benytter jeg mig nu af dette? Hvordan kalder jeg den? Hvordan hiver jeg fx. noget ud fra en tabel jeg har i min database?

Jeg har valgt at kode i C#. På forhånd tak :-)
Avatar billede arne_v Ekspert
28. december 2006 - 02:43 #1
Avatar billede madeindk Nybegynder
28. december 2006 - 17:50 #2
Arne, håbet det var dig der ville svare :-) Men jeg har kigget de der artikler i gennem og har jo også fået lavet en .cs fil med min forbindelse. Men det er som den ikke bliver kørt? Hvordan kalder jeg den, så jeg kan få mine resultater ud?
Avatar billede arne_v Ekspert
28. december 2006 - 18:04 #3
din kode er jo et console program

i ASP.NET skal det lavet lidt anderledes

jeg finder lige nogle eksempler
Avatar billede arne_v Ekspert
28. december 2006 - 18:05 #4
<%@ import namespace="MySql.Data.MySqlClient" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
    MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
    con.Open();
    MySqlCommand sel = new MySqlCommand("SELECT COUNT(*) FROM t1", con);
    long n = (long)sel.ExecuteScalar();
    con.Close();
    result.Text = n.ToString();
}
</script>
<asp:label id="result" runat="server"/>
Avatar billede arne_v Ekspert
28. december 2006 - 18:06 #5
det her er SQLServer og VB men forskellen er ike stor til MySQL og C#:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="VB" runat="server">
    Private Sub LoadData
        Dim con As SqlConnection = New SqlConnection ("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM T1", con)
        Dim ds As DataSet = New DataSet("T1")
        da.Fill(ds)
        MyDataList.DataSource = ds
        MyDataList.DataBind
        con.Close
    End Sub
    Private Sub Page_Load(src As Object, e As EventArgs)
        Call LoadData
    End Sub
    Private Sub Save_Click(src As Object, e As EventArgs)
        Dim con As SqlConnection = New SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim ins As SqlCommand = New SqlCommand("INSERT INTO T1 VALUES(" & f1.Text & ",'" & f2.Text & "')", con)
        ins.ExecuteNonQuery
        con.Close
        Call LoadData
    End Sub
</script>
<form runat=server>
Current data:
<table border>
    <tr>
    <th>F1</th>
    <th>F2</th>
    </tr>
    <asp:Repeater id="MyDataList" runat="server">
        <ItemTemplate>
            <tr>
            <td><%# DataBinder.Eval(Container.DataItem,"F1") %></td>
            <td><%# DataBinder.Eval(Container.DataItem,"F2") %></td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
Add row:
<br/>
F1: <asp:TextBox id="F1" runat="server"/>
<br/>
F2: <asp:TextBox id="F2" runat="server"/>
<br/>
<asp:Button id="SaveBtn" Text="Save" OnClick="Save_Click" runat="server"/>
</form>
Avatar billede arne_v Ekspert
28. december 2006 - 18:08 #6
og filerne er saa .aspx filer

til stoerre ting skal man naturligvis have koden i separate filer (.aspx.cs)
men du kan godt starte med lidt inline kode for at laere det
Avatar billede madeindk Nybegynder
28. december 2006 - 19:47 #7
Nu bliver det jo straks meget mere spændende :-) Det kode du skrev i 28/12-2006 18:05:08 virker, den putter nu et 0 ind i en label og det passer perfekt. Så skal jeg vel bare selv undersøge hvordan man looper noget, det tror jeg nu heller ikke er det store problem :-)

Men det jeg tænkte på var om man ikke kunne include det selve forbindelsen til databasen i en .cs fil, så hvis jeg vil ændre den skal jeg bare gøre det der, eller tænker jeg nu for meget classic ASP?

Du må gerne smide et svar Arne, du har allerede været til stor hjælp.
Avatar billede arne_v Ekspert
28. december 2006 - 22:31 #8
du kan enten bruge en data web kontrol - se eksempler i de foerste links jeg gav - eller
du kan bruge en repeater - se min kode ovenfor

du kan definere din connection string i din config fil

og svar
Avatar billede madeindk Nybegynder
29. december 2006 - 00:05 #9
Har fundet ud af det - jeg brugte repeater :-)
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