Laden...

Login

Erstellt von alf468 vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.876 Views
A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren
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)

C
1.215 Beiträge seit 2004
vor 19 Jahren

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

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren
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

C
1.215 Beiträge seit 2004
vor 19 Jahren

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

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

Aso geht das 😁
Danke sehr 👍

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

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;}
C
1.215 Beiträge seit 2004
vor 19 Jahren

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

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

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;}
		}

	}
C
1.215 Beiträge seit 2004
vor 19 Jahren

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

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

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;

C
1.215 Beiträge seit 2004
vor 19 Jahren
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.

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

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!!

C
1.215 Beiträge seit 2004
vor 19 Jahren

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

A
alf468 Themenstarter:in
196 Beiträge seit 2005
vor 19 Jahren

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

4.207 Beiträge seit 2003
vor 19 Jahren

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