Laden...

Login

Letzter Beitrag vor 19 Jahren 15 Posts 4.010 Views
Login

1)Ich habe ein Programm geschrieben bei dem man sich ua. auch einloggen muss
Ich frage mich nun wie es möglich ist den Login Namen in jeder Klasse zu verfügung zu stellen ??
Die mysql Befehle stehen in einer extra Klasse

2)
Weiss einer wie man seinen MySQL Server nach aussen freigeben kann??(XAMPP von appachefriends)

erstelle dir doch eine Credentials-klasse, in der du beim login den usernamen, domain oder was du sonst noch brauchst ablegst.
diese klasse refenzierst du dann in einer zentralen klasse deiner anwednung, so dass du sie dann von überall her nutzen kannst.

2)
normalerweise legt man das bei der installation von MySql fest - aber evtl. kannst du das auch in der ini nachträglich ändern.
schau dir mal die einstellungsvariablen im MySql-manager (win32) dazu an.

grtz
chief

public class nick_class
	{
		public String user="";
		public void nick_an(String nickname)
		{
			user=nickname;
			
		}
		public String  nick_aus()
		{
			
			return user;
		}
	}

Ich lasse mir den Nick aus der MySqlKlasse geben und will den nun bei Aufruf der Methode nick_aus() "ausgeben" lassen
Nur steht in der Methode nick_aus() user leer weil die Zuweisung nicht übernommen wurde

dafür gibt es eigendlich die get/set-accessoren für properties.
das ginge dann so...



public class NickClass
{
    private string user;

    public string User
    {
        get { return this.user; }
        set { this.user = value; }
    }
}

// so kannst du dann auf die eigenschaft zugreifen...

NickClass nc = new NickClass();

nc.User = // nickname aus der DB
string user = nc.User;


grtz
chief

Aso geht das 😁
Danke sehr 👍

So habe das gerade mal getestet und es wird immer noch nichts ausgegeben

set { this.user = value;
Console.WriteLine("test"+this.user); //Nick wird Ausgegeben
}
get { 
Console.WriteLine("test"+this.user); //Nick wird nicht Ausgegeben sondern nur test
return this.user;}

dann kann das nicht dieselbe instanz der klasse sein, in die du den wert hineingeschrieben hast - sonst muss der wert drinstehen.

in welchem zusammenhang erstellst du die klasse und verwendest sie dann weiter?
(code...)

grtz
chief

Also der Wert kommt aus der DB

String n="";
			String p="";
			try
			{
				String b="Select nick,pw from user where (nick='"+nick+"')and (pw=MD5('"+pw+"'));";
				this.verbinden();
				MySQLCommand com = new MySQLCommand(b,this.con);
				read=(MySQLDataReader)com.ExecuteReader();
				
				while(read.Read())
				{
					n=read[0].ToString();
					p=read[1].ToString();
					
				}
				if(p=="")
				{
					MessageBox.Show("Userdaten nicht vorhanden");
				}
				else
				{
					Menü start=new Menü();
					nick_class start2=new nick_class();
					start2.User=n; //Übergabe
					start.Show();
				}
				com.ExecuteNonQuery();
				com.Dispose();
			}
			catch(MySQLException MErr)
			{
				throw new Exception(MErr.Message + "    " + MErr.StackTrace);
			}
			catch(Exception err)
			{
				throw new Exception(err.Message +  "    " + err.StackTrace);
			}
			
			con.Close();
			
			

		}
public class nick_class
	{
		
		private string user;

		public string User
		{
			
			set { this.user = value;}
			get { 
				Console.WriteLine("test"+this.user);
				return this.user;}
		}

	}

und wenn du jetzt an anderer stelle "start2.User" ausgeben lässt, wird nicht ausgegeben?
das kann ich mir kaum vorstellen - wie verwendest du die instanz "start2" denn weiter bzw. wo lässt du dir die "User"-eigenschaft ausgeben?

grtz
chief

get {
Console.WriteLine("test"+this.user);
return this.user;}

Da müsste er doch was ausgeben

Die eigentliche Ausgabe soll in einem TextField erscheinen
Der soll dort seine Nutzungsdaten ändern können
nick_class nick_s=new nick_class();
nick=nick_s.User;

nick_class nick_s=new nick_class();
nick=nick_s.User; 

dacht ichs mir doch, da steckt der fehler!

du erstellst eine neue instanz von "nick_class" - da ist natürlich der wert nicht enthalten.
du musst genau die instanz ("start2") weiterverwenden, der du den wert auch übergeben hast, wenn du eine entsprechende ausgabe haben willst...
😉

grtz
chief

ps: evtl. machst du dich in punkto objekte und instanzen noch mal etwas schlauer - ich habe die vermutung, dass du nicht weisst, was eine instanz einer klasse ist, und wie man diese sinnvoll verwendet.

Hä???
Ich habe die doch weiter verwendet 🤔

Abruf:nick_class nick_s=new nick_class();
nick=nick_s.User;
Console.WriteLine("test"+nick);

Übergabe
nick_class start2=new nick_class();
start2.User=n;

Methode
public string User
{

 set { this.user = value;}  
 get { return this.user;}  

}

Sag mal genau wo das der Fehler sein soll!!

Abruf:**:::

genau hier erstellst du eine neue instanz der klasse "nick_class".
diese instanz hat keinen inhalt für das member "User"!

den wert für "User" hast du zuvor für eine andere instanz der klasse "nick_user" namens "start2" übergeben.
die instanz "nick_s" hat NICHT die werte von "start2", nur weil sie zufällig objekte der gleichen klasse sind, da es zwei verschiedene instanzen sind.
informiere dich über die begriffe "Klasse", "Objekt" u. "Instanz", wenn du nicht verstehst, was ich meine.

grtz
chief

Das ist doch voll der Scheiß
Ich habe jetzt in der Klasse db_coding eine Methode gemacht die den Wert in die andere Klasse liefern soll

public String nick_back()
{
	Console.WriteLine(start2.User);
	String nickname=start2.User;
	return nickname;
}

Es wird wieder nix übergeben dabei ist es doch die gleiche instanz

Original von alf468
Das ist doch voll der Scheiß

LOL ... also ohne Dir jetzt zu Nahe treten zu wollen, Du disqualifizierst Dich mit solchen Aussagen gerade selbst ...

Wenn Du das für "voll den Scheiß" hältst, dann zeigt das lediglich, dass Du ganz gravierende Verständnisprobleme hast. Wie Du die lösen kannst, wurde Dir schon mehrfach nahegelegt ... schau Dir an, was Klassen, Objekte, Instanzen, ... sind.

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de