C#-到SQL Server 2005的公共全局连接

C#-到SQL Server 2005的公共全局连接,c#,.net,sql-server,connection,C#,.net,Sql Server,Connection,我是C#的新手,昨天刚开始学习 我已创建连接到SQL Server的类: namespace Exchange_Ofiice.Classes { public class sqlConn { public void connectionMethod() { SqlConnection myConnection = new SqlConnection("user id=ID;password=PASS;server=SERVE

我是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);                          
        }

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

p.S.行
SqlCommand myCommand=newsqlcommand(“命令字符串”,myConnection)不起作用


抱歉,如果我有错误,我的英语不是很好。

试试这个。因此,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();
        }
    }
}

哦,你可能想考虑让Sql连接私有< /P>

private SqlConnection myConnection;
然后创建一个函数来检索该值

   public SqlConnection GetConnection()
    {
        return myConnection;
    }
在另一类中,它将是:

SqlCommand myCommand = new SqlCommand("Command String", GetConnection());

首先,连接应该是类的公共字段,而不是函数变量。第二,你最终关闭了你的连接,所以你以后没有机会让它工作

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接口(),否则以后可能会遇到一些问题。

最好在应用程序周围共享连接字符串,但不要使用连接。无论何时需要连接,都应该创建一个新连接,
打开它,将其用于当前工作,然后
关闭它(或者,等效地,使用
块将其放在
中)。不要试图共享连接对象。@Damien_不信者,谢谢。我理解我的错误。