2

我是 C# 新手,昨天才开始学习。

我创建了连接到 SQL Server 的类:

namespace Exchange_Ofiice.Classes
{
    public class sqlConn
    {
        public void connectionMethod()
        {
            SqlConnection myConnection = new SqlConnection("user id=ID;password=PASS;server=SERVER;database=DB;");
            try
            {
                myConnection.Open();
            }
            catch
            {
                MessageBox.Show("Невозможно подключиться к Базе данных. Пожалуйста обратитесь к программистам!", "Ошибка подключения к Базе данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                myConnection.Close();
            }        
        }
    }
}

和另一个用于用户身份验证的类:

namespace Exchange_Ofiice.Classes
{
    public class auth:sqlConn
    {

        public void authMethod() 
        {
            SqlCommand myCommand = new SqlCommand("Command String", myConnection);                          
        }

    }
}

如何myConnection在第二类中获取(使用)SQL 连接结果()?

PS线SqlCommand myCommand = new SqlCommand("Command String", myConnection);不工作。

PSS 对不起,如果我有错误,我的英语并不完美。

4

2 回答 2

1

尝试这个。因此,您在类中有 SQLConnection 而不是在函数中。如果您在函数中声明某些内容,则只能在该函数中访问。

 public class sqlConn
{
    public SqlConnection myConnection;
    public void connectionMethod()
    {
        myConnection = new SqlConnection("user id=ID;password=PASS;server=SERVER;database=DB;");
        try
        {
            myConnection.Open();
        }
        catch
        {
            MessageBox.Show("Невозможно подключиться к Базе данных. Пожалуйста обратитесь к программистам!", "Ошибка подключения к Базе данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            myConnection.Close();
        }
    }
}

哦,您可能要考虑将 SQLConnection 设为私有

private SqlConnection myConnection;

然后创建一个函数来检索该值。

   public SqlConnection GetConnection()
    {
        return myConnection;
    }

在另一堂课中,它将是:

SqlCommand myCommand = new SqlCommand("Command String", GetConnection());
于 2013-07-25T08:50:27.267 回答
1

首先,连接应该是类的公共字段,而不是函数变量。其次,您最终关闭了连接,因此您以后没有机会使其正常工作。

public class sqlConn
{ 
        public SqlConnection myConnection = new SqlConnection("user id=ID;password=PASS;server=SERVER;database=DB;");

        public void connectionMethod()
        {          
            try
            {
                myConnection.Open();
            }
            catch
            {
                //Here goes error handling...
            }                 
    }
}

而且,当然,在您的 authMethod 中,如果连接未初始化,您应该检查连接状态,以防止出现异常。

此外,作为一种好的做法,请确保您正在为您的连接类实现IDisposable接口 ( http://msdn.microsoft.com/en-us/library/system.idisposable.aspx ),否则您以后可能会遇到一些麻烦。

于 2013-07-25T08:59:26.637 回答