Avatar billede decrypto Nybegynder
15. december 2004 - 23:28 Der er 34 kommentarer og
1 løsning

Database connection til en MySQL database, hvordan?

Meget simpelt.

Jeg har en MySQL database.

Jeg har en .Net webapplikation.

Jeg vil gerne...

1. Få kontakt med databasen.

2. Lave en simpelt select * query.

3. Skrive resulatet ud.

Alt dette i min .net webapplikation i c#.

Er der en der kan evt. henvise mig til et godt site, da jeg er nybegynder i .net og c#.
Avatar billede arne_v Ekspert
15. december 2004 - 23:31 #1
Jeg vil anbefale dig at bruge ByteFX/MySQL .NET provider for MySQL og ikke
ODBC.

Du skal beslutte dig for om du vil lave gammeldags ASP style database
brug eller du vil bruge nogle af ASP.NET smarte data kontroller.
Avatar billede arne_v Ekspert
15. december 2004 - 23:33 #2
Lidt sammen copy pastet kode (som viser den gammeldags måde):

<%@ Assembly Name="ByteFX.MySqlClient" %>
<%@ Page Language="C#" %>
<%@ Import Namespace="ByteFX.Data.MySQLClient" %>
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<%
        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();
        MySqlCommand sel = new MySqlCommand("SELECT * FROM T1", con);
        MySqlDataReader rdr = sel.ExecuteReader();
        while(rdr.Read()) {
%>
    <tr>
    <td><%=rdr[0]%></td>
    <td><%=rdr[1]%></td>
    </tr>
<%
        }
        rdr.Close();
        con.Close();
%>
</table>
Avatar billede decrypto Nybegynder
15. december 2004 - 23:34 #3
Det skal være de smarte ASP.NET data kontroller. Jeg sidder nemlig og sætter mig ind i .net og c#.
Avatar billede decrypto Nybegynder
15. december 2004 - 23:35 #4
ok... jeg prøver mig frem....
Avatar billede arne_v Ekspert
15. december 2004 - 23:35 #5
Avatar billede arne_v Ekspert
15. december 2004 - 23:39 #6
For data kontroller kig her:
  http://www.asp.net/tutorials/quickstart.aspx

Sektionerne:

Data Binding Server Controls
Server-Side Data Access
Data Access and Customization
Avatar billede decrypto Nybegynder
15. december 2004 - 23:48 #7
Hmmm hvor finder jeg ByteFX/MySQL .NET?
Avatar billede decrypto Nybegynder
15. december 2004 - 23:49 #8
Okay jeg har fundet et site, hvor man kan hente ByteFX.
Avatar billede decrypto Nybegynder
15. december 2004 - 23:52 #9
Sådan!!! det hedder MySQL connecter Net. Jeg har hentet det og kørt installationen. Er jeg kørende herfra????
Avatar billede decrypto Nybegynder
16. december 2004 - 00:28 #10
hmmm efter installation kan jeg se i dokumentationen at jeg muligvis nu har adgang til en masse klasser.
Avatar billede decrypto Nybegynder
16. december 2004 - 00:36 #11
Jeg ved ikke hvad man kalder processen, men jeg har under referencer i visual studio .net add'et MySQL.Data som jeg kan kigge i og se der er et hav af ting og sager. Jeg fandt dll filen under MySQL -> Bin er det rigtigt det jeg har gjort?
Avatar billede ladyhawke Novice
16. december 2004 - 11:19 #12
Der findes også en demo side som anvender c# og MySQL, hvor koden er frit tilgængelig, det vil måske kunne hjælpe også:

http://www.wedonet.net/Default.aspx
Avatar billede burningice Nybegynder
16. december 2004 - 17:47 #13
arne_v>> :)


<%@ Assembly Name="ByteFX.MySqlClient" %>
<%@ Page Language="C#" %>
<%@ Import Namespace="ByteFX.Data.MySQLClient" %>

<script 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 * FROM T1", con);
        MySqlDataReader rdr = sel.ExecuteReader();

        dg.DataSource = rdr;
    dg.DataBind();

}

</script>

<html>
<head />
<body>

<asp:datagrid id="dg" runat="server />

</body>
</html>
Avatar billede decrypto Nybegynder
16. december 2004 - 20:41 #14
Det er vel ikke i codebehind filen alt dette står?? eller skal jeg dele HTML delen over i aspx filen?
Avatar billede arne_v Ekspert
16. december 2004 - 21:25 #15
de der stumper kode er begge i .aspx filen

cf's Page_Load burde nemt kunne flyttes til .aspx.cs filen
Avatar billede burningice Nybegynder
16. december 2004 - 21:28 #16
hvis den bliver flyttet til codebehind, skal du huske at erklære dg som et DataGrid-field i din klasse
Avatar billede decrypto Nybegynder
16. december 2004 - 23:02 #17
Jeg prøver mig frem....er gået lidt i dvale :)
Avatar billede decrypto Nybegynder
18. december 2004 - 18:52 #18
Hmm jeg har lidt svært ved at få til at virke.

Er det ikke korrekt:
default.aspx.cs (codebehind filen)
******************************************************

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;




namespace wwwbutikdk
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class default_page : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
                MySqlConnection con = new MySqlConnection("Database=ecommerce;Data Source=localhost;User Id=;Password=");
                con.Open();
                MySqlCommand sel = new MySqlCommand("SELECT * FROM product", con);
                MySqlDataReader rdr = sel.ExecuteReader();

                dg.DataSource = rdr;
                dg.DataBind();
        }
       
        //public MySqlConnection();
       
        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
}
---------------- default.aspx filen ----------------------
<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="wwwbutikdk.default_page" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            Her kommer forsiden..... til butikken.
        </form>
       
        <asp:datagrid id="dg" runat="server />

    </body>
</HTML>
Avatar billede arne_v Ekspert
18. december 2004 - 20:21 #19
Hvilken fejl får du ?

Har du bemærket 16/12-2004 21:28:36 ?
Avatar billede burningice Nybegynder
18. december 2004 - 20:43 #20
du har jo ikke oprettet det field som jeg sagde var nødvendigt

public class default_page : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.DataGrid dg;
     
        private void Page_Load(object sender, System.EventArgs e)
        {
                MySqlConnection con = new MySqlConnection("Database=ecommerce;Data Source=localhost;User Id=;Password=");

                ... osv
Avatar billede decrypto Nybegynder
18. december 2004 - 21:14 #21
Husk jeg er total rookie i .net....

Jeg tror jeg har et andet problem. Jeg får blå bølgestreger under MySqlConnection og alt det der er connection relateret. Jeg gætter på at min application ikke genkender namespacet MySqlConnection, så min reference registrering er åbentbart ikke slået igennem.
Avatar billede arne_v Ekspert
18. december 2004 - 21:16 #22
Jeg kan ikke se en using til det MySQL namespace ...
Avatar billede decrypto Nybegynder
18. december 2004 - 21:46 #23
Ja...nu har jeg tilføjet...

using MySql;
using MySql.Data;

Men keine reaktion, når jeg debugger, får jeg....

c:\inetpub\wwwroot\wwwbutikdk\default.aspx.cs(28): The type or namespace name 'MySqlConnection' could not be found (are you missing a using directive or an assembly reference?)
c:\inetpub\wwwroot\wwwbutikdk\default.aspx.cs(29): The type or namespace name 'con' could not be found (are you missing a using directive or an assembly reference?)

etc.
Avatar billede decrypto Nybegynder
18. december 2004 - 22:34 #24
Sådan! Nu brokker den sig ikke mere mht til database connection.
Avatar billede decrypto Nybegynder
18. december 2004 - 22:35 #25
Man skal åbenbart skriv hele 'stien'.

using MySql;
using MySql.Data;
using MySql.Data.MySqlClient;

Før den genkender det. Nu mangler jeg bare at præsentere data....
Avatar billede decrypto Nybegynder
18. december 2004 - 22:36 #26
Jeg får nedenstående fejl... prøver lige at 'ordne' det...

Parser Error Message: The Runat attribute must have the value Server.

Source Error:

Line 14:         </form>
Line 15:        
Line 16:         <asp:datagrid id="dg" runat="server />
Line 17:
Line 18:     </body>
Avatar billede arne_v Ekspert
18. december 2004 - 22:38 #27
Der mangler vel bare en "
Avatar billede decrypto Nybegynder
18. december 2004 - 22:38 #28
Jeg manglede bare et " i slutningen er fixet. :)

Nu får jeg en...

#28000Access denied for user ''@'localhost' (using password: NO)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: MySql.Data.MySqlClient.MySqlException: #28000Access denied for user ''@'localhost' (using password: NO)

Source Error:


Line 28:         {
Line 29:                 MySqlConnection con = new MySqlConnection("Database=ecommerce;Data Source=localhost;User Id=;Password=");
Line 30:                 con.Open();
Line 31:                 MySqlCommand sel = new MySqlCommand("SELECT * FROM product", con);
Line 32:                 MySqlDataReader rdr = sel.ExecuteReader();

Virker som om den skal have et password med, da jeg ikke har sat noget password på databasen, burde det jo virke....
Avatar billede decrypto Nybegynder
18. december 2004 - 22:39 #29
Måske skal jeg bruge 'root' som User.
Avatar billede decrypto Nybegynder
18. december 2004 - 22:41 #30
Det virkede ikke, har I nogen ide om hvad det kan være???
Avatar billede decrypto Nybegynder
18. december 2004 - 22:42 #31
Sådan det virker squ!!!!! Jeg kom lige i tanke om mit password.

Nu kører jeg med klatten.
Avatar billede decrypto Nybegynder
19. december 2004 - 22:43 #32
Nu da jeg får præsenteret data, hvordan kan jeg så få hver anden række med en anden baggrundsfarve. Jeg løber jo ligsom ikke en løkke igennem her???
Avatar billede ladyhawke Novice
20. december 2004 - 11:39 #33
mener du kan sætte nogle options i datagrid, som tager sig af det
Avatar billede decrypto Nybegynder
20. december 2004 - 16:50 #34
Okay så dvs at der i datagrids properties kan sættes sådan nogle ting... jeg kigger på det...
Avatar billede arne_v Ekspert
22. januar 2005 - 23:12 #35
OK ?
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
Kurser inden for grundlæggende programmering

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