Avatar billede jkampmann Nybegynder
22. februar 2008 - 11:39 Der er 15 kommentarer og
1 løsning

Bruge en klasse i min kode - nybegynder

Hejsa, jeg vil prøve at lave sådan jeg ikke skal benytte kodeord i hver site, med at oprette forbindelse til min MySQL-database.

Jeg har oprettet en "class", hvor på jeg har følgende kode:

public class MySQLConnector
{
    public MySQLConnector()
    {
        OdbcConnection con = new OdbcConnection();

        con.ConnectionString = "driver={MySql};server=0;database=0;uid=0;pwd=0;OPTION=0";
        con.Open();
    }
}

Men hvordan gør jeg sådan, at jeg kan bruge min klasse i Default.aspx.cs?!

Skal jeg bruge noget using.MySQLConnector eller hvordan fungerer det?

Nemt spørgsmål, men svært i mine øjne.
Avatar billede jkampmann Nybegynder
22. februar 2008 - 11:41 #1
Desuden hedder den MySQLConnector.cs og er placeret under App_code - er det rigtigt?! Og ser min MySQLConnector-klasse rigtig ud, mht. brug af MySQL?

Kan jeg så i default.aspx lave f.eks:

OdbcCommand cmd = new OdbcCommand();
cmd.CommandText = "SELECT * FROM medier";
cmd.Connection = con;

OdbcDataReader reader = cmd.ExecuteReader();

Eksempelvis?!
Avatar billede arne_v Ekspert
22. februar 2008 - 15:07 #2
public class MySQLConnector
{
    public static OdbcConnection GetConnection()
    {
        OdbcConnection con = new OdbcConnection();

        con.ConnectionString = "driver={MySql};server=0;database=0;uid=0;pwd=0;OPTION=0";
        con.Open();
        return con;
    }
}

og:

OdbcCommand cmd = new OdbcCommand();
cmd.CommandText = "SELECT * FROM medier";
cmd.Connection = MySQLConnector.GetConnectio();

var ihvertfald en måde.
Avatar billede kalp Novice
22. februar 2008 - 15:59 #3
ud over, at lave en singleton klasse kan du ligeså godt placere din kode i web.config hvor hvor du nemt har adgang til den i koden hvis du skal bruge den i andre sammenhænge.

men det smarte er også, at du nemt kan ændre database, password, brugernavn osv.
da det blot skal gøres i web.config filen, som er en simpel xml struktur.
Avatar billede jkampmann Nybegynder
24. februar 2008 - 20:29 #4
Hej Arne, tak for svaret. Nu har jeg lavet en .cl som hedder "MySQLConnector", som bliver placeret under "App_data".

Skal jeg ikke "Inkluderer" klassen på en eller anden måde i min default.aspx.cs for at den ved, hvor "MySQLConnector.GetConnection()" er? I såfald - hvordan?

På forhånd tak
Avatar billede arne_v Ekspert
24. februar 2008 - 20:58 #5
Nej.

(hvis den ligger i et andet namespace skal du dog using det)
Avatar billede jkampmann Nybegynder
25. februar 2008 - 11:13 #6
Hej Arne, den melder desværre fejl - men jeg kan ikke give dig fejlmeddelsen, da den ikke udskriver nogle fejl på mit webhotel - kun lokalt, og der har jeg ikke adgang til "odbc".

Jeg har sat klassen under "App_Code" => MySQLConnector.cs
Hvor jeg bruger using (using System.Data.Odbc;)

Og koden:

public class MySQLConnector
{
    public static OdbcConnection GetConnection()
    {
        OdbcConnection con = new OdbcConnection();

        con.ConnectionString = "driver={MySql};server=xxx;database=xxx;uid=xx;pwd=xxxx;OPTION=3";
        con.Open();

        return con;
    }
}

Og min defualt.aspx.cs bruger jeg også using System.Data.Odbc;

samt følgende kode:
OdbcCommand cmd = new OdbcCommand();
        cmd.CommandText = "SELECT * FROM medier";
        cmd.Connection = MySQLConnector.GetConnection();

        OdbcDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            Response.Write(reader[0]);
        }

- Kan du se nogle fejl?
Avatar billede jkampmann Nybegynder
25. februar 2008 - 18:01 #7
Anyone..? Evt. andre alternativer?
Avatar billede ieconfig Nybegynder
27. februar 2008 - 23:50 #8
- kan du ik smide den i en try catch og udskrive din exception?
Avatar billede jkampmann Nybegynder
28. februar 2008 - 09:52 #9
Hvordan gør jeg det - undskyld jeg spørger.. Er ny - sorry
Avatar billede ieconfig Nybegynder
28. februar 2008 - 14:35 #10
try
{
OdbcCommand cmd = new OdbcCommand();
        cmd.CommandText = "SELECT * FROM medier";
        cmd.Connection = MySQLConnector.GetConnection();

        OdbcDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            Response.Write(reader[0]);
        }
}
catch(Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
}

så burde du få udskrevet din fejl
Avatar billede jkampmann Nybegynder
28. februar 2008 - 20:35 #11
Halløjsa igen. Nu har jeg forsøgt mig.. Men den udskriver samme underlige fejl - ingen bestemt.

Se her:
http://detbrunepunktum.dk/Jesper/WebSite8/

Default.aspx:

try
{
      OdbcCommand cmd = new OdbcCommand();
      cmd.CommandText = "SELECT * FROM medier";
      cmd.Connection = MySQLConnector.GetConnection();
} catch (Exception ex) {
        HttpContext.Current.Response.Write(ex.Message);
}

MySQLConnector.cl:

public class MySQLConnector
{
    public static OdbcConnection GetConnection()
    {
        OdbcConnection con = new OdbcConnection();

        con.ConnectionString = "driver={MySql};server=*;database=*;uid=*;pwd=*;OPTION=3";
        con.Open();

        return con;
    }
}
Avatar billede jkampmann Nybegynder
29. februar 2008 - 09:45 #12
Wait a second.. Det drillede i min web.config, jeg skulle sætte noget til off, og  <autcheniz (et eller andet) mode="windows" /> skulle jeg fjerne!

Men når jeg så har klassen i app_code, kan den fint nok finde min klasses public-funktion etc (i klassen) som jeg kalder fra default.aspx.cs, men når jeg smider på mit webhotel, siger den bare at "MySQLConnector" ikke findes i samme dokument (den skal åbenbart være i default.aspx.cs som den netop IKKE skal)..

Hvad skal jeg gøre?

Den udskriver:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0103: The name 'MySQLConnector' does not exist in the current context
Avatar billede jkampmann Nybegynder
06. marts 2008 - 15:44 #13
Nåh, jeg vælger at lukke, hvis ingen kan komme med respons. Havde håbet på arne_v kunne guide mig på vej til hvorfor den udskriver denne fejl
Avatar billede arne_v Ekspert
07. marts 2008 - 04:39 #14
Fejl beskeden betyder at den ikke kan finde den klasse.

Som skrevet i dit andet spørgsmål med samme problem, så er de 2 oplagte gæt:

1)  web hotel kører kun .NET 1.1 og kender derfor ikke app_code

2)  app_code ligger et forkert sted
Avatar billede jkampmann Nybegynder
09. marts 2008 - 12:03 #15
Problemet er jo, at i min default.aspx fil som jeg benytter, kan jeg jo fint finde klassen, farven bliver blå-agtig, og ved at føre musen over, fortæller den, at det er en klasse.

Så snart jeg oploader til mit webhotel kokser det.

Kunne jeg ikke lave noget i web.config, noget xml, med mine mysql-informationer, og lave noget som læste fra web.config uden at blive alt for besværligt?

Svar lige tak :-)
Avatar billede arne_v Ekspert
09. marts 2008 - 20:45 #16
Du skal stadig have mulighed for at lav edin egen kode.

Vi kan fortsætte i det andet spørgsmål.

Svar.
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