【问题标题】:C# class uses in classes wht it doesn't workC# 类在类中使用它不起作用
【发布时间】:2016-08-31 07:40:41
【问题描述】:

我有连接数据库的课程:

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

以及其他查询,如插入、更新、删除、下载数据等:

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

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

为什么我不能打电话给SQLcnn.Open();?我尝试使用静态字段/类,但我只能在 Main 中正常使用它。我知道我可以在一堂课上进行连接和查询,但我想了解这个谜团以备不时之需。

【问题讨论】:

  • 你应该阅读access modifiers
  • 你的方法是open,而不是Open。您的课程也是私有的,而不是公开的。
  • 两个原因: 1. void open() 是一个private 函数,这意味着您无法在类本身之外访问它。 2.open()和Open()可以是两个不同的函数。 C# 区分大小写。

标签: c# sql-server class static


【解决方案1】:

您应该在 ** 内进行更改 **

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

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

【讨论】:

    【解决方案2】:

    连接类的访问修饰符和方法应该是公共的。像这样:

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

    如果您希望它们对所有其他类是私有的并且 Query 类继承连接类,也可以保护 open() 和 close() 方法。

    【讨论】:

      猜你喜欢
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多