C # Могу ли я сделать sqlConnection общедоступным и ссылаться на него из других форм? - PullRequest
2 голосов
/ 24 марта 2011

У меня есть sqlConnection в моей первой форме, и я подумал, могу ли я сделать его общедоступным, чтобы я мог ссылаться на него из других форм.Код, который у меня есть, приведен ниже, но я не знаю, где бы я его опубликовал или как.

public partial class frmConnect : Form
{

    public frmConnect()
    {
        InitializeComponent();
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        String server;

        server = cmbConnect.SelectedItem.ToString();

        MessageBox.Show(server);

        sqlConnectionNW.ConnectionString = "Data Source=" + server + ";Initial Catalog=Northwind;Integrated Security=True";

        try
        {
            sqlConnectionNW.Open();

            MessageBox.Show("Successfully Connected!");

            frmSignIn frmLogIn = new frmSignIn();

            frmLogIn.server = server;

            sqlConnectionNW.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

        }

    }
}

}

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Я бы посоветовал вам не делать это таким образом.Для доступа к базе данных лучше всего использовать собственный класс, где у вас будут все методы, которые будут взаимодействовать с базой данных (выбирать, вставлять, обновлять и удалять запросы).И каждый метод будет иметь свою собственную реализацию SqlConnection (создание нового объекта).

Вы можете сделать это так:

public class WorkWithDataBase
{
    private void SomeMethod()
    {
        using(SqlConnection sqlConn = new SqlConnection("connectionString"))
        {
            //rest of the code
            sqlConn.Open(); //if needed)
            //and no need to close the connection, becuase "using" will take care of that!
        }
    }
}

Надеюсь, это поможет, Mitja

1 голос
/ 24 марта 2011

Я предполагаю, что ваш объект подключения находится в поле или свойстве класса.Обычно это не очень хорошая идея, даже если поле или свойство являются частными.

Лучше всего сохранять соединения как локальные переменные там, где они необходимы.Откройте их как можно позже и закройте как можно раньше, предпочтительно, завернув их в блок using.

0 голосов
/ 24 марта 2011

Вы должны извлечь соединение и всю обработку из формы в ее собственный класс - вы можете назвать это DataHandling.Передайте это в форму и там, где вы хотите ее использовать.

: -)

...