2016-05-05 3 views
-7
funktioniert

Ich habe Klasse für die Verbindung zur Datenbank:C# Klasse verwendet in Klassen wht es nicht

namespace DamianWprawka 
{ 
    class SQLcon 
    { 
     static SqlConnection konekt = new SqlConnection(); 

     public SQLcon() 
     { 
      konekt.ConnectionString = "Data Source=.\\sqlexpress;" 
      + "Initial Catalog=PRACA;" + "User id=sa;" + "Password=xxXXxx;"; 
     } 

     void open() 
     { 
      konekt.Open(); 
     } 

     void close() 
     { 
      konekt.Close(); 
     } 
    } 
} 

Und andere für Abfrage wie Einfügen, Aktualisieren, Löschen, Herunterladen von Daten itp:

namespace DamianWprawka 
    { 
     class SQLquery 
     { 
      SQLcon SQLcnn = new SQLcon(); 

      public void PobierzPracownik 
      { 
       SQLcnn.Open(); 
      } 
     } 
    } 

Warum kann ich nicht SQLcnn.Open(); anrufen? Ich versuche mit statischem Feld/Klasse und ich kann es nur normal in Main verwenden. Ich weiß, dass ich in einer Klasse eine Verbindung herstellen und abfragen kann, aber ich möchte dieses Geheimnis für die Zukunft verstehen.

+4

Sie sollten lesen über [Zugriffsmodifizierer] (https://msdn.microsoft.com/en-us/library/wxh6fsc7.aspx) – dotctor

+2

Ihre Methode ist 'open', nicht' Open'. Ihre Klasse ist auch privat, nicht öffentlich. – Rob

+0

Zwei Gründe: 1. 'void open()' ist eine 'private' Funktion, was bedeutet, dass Sie nicht außerhalb der Klasse selbst darauf zugreifen können. 2. 'open()' und 'Open()' können zwei verschiedene Funktionen sein. C# unterscheidet zwischen Groß- und Kleinschreibung. – AntiTcb

Antwort

0

Sie sollten Änderungen innerhalb machen ** **

class SQLcon 
{ 
    .... 
    **public** void open() ... 
    **public** void close() ... 
} 

class SQLquerry 
{ 
    .... 
    public void PobierzPracownik**()** 
    { 
     SQLcnn.**open**(); 
    } 
} 
+0

Ich bin ein Idiot. Mod lösche dieses Thema schnell: D – Vanguard1990

0

Der Zugriffsmodifikator und das Verfahren für die Verbindungsklasse öffentlich sein sollte. Wie folgt aus:

public class SQLcon 
{ 
     static SqlConnection konekt = new SqlConnection(); 
     public SQLcon() 
     { 
      konekt.ConnectionString = "Data Source=.\\sqlexpress;" + "Initial Catalog=PRACA;" + "User id=sa;" + "Password=xxXXxx;"; 
    } 
    public void open() 
    { 
     konekt.Open(); 
    } 
    public void close() 
    { 
     konekt.Close(); 
    } 
} 

Die open() und close() -Methode auch geschützt werden könnten, wenn Sie wollen, für alle anderen Klassen privat sein und die Abfrageklasse, die Verbindungsklasse erben.

Verwandte Themen