2011-03-24 3 views
2

첫 번째 양식에 sqlConnection을 가지고 있으며 다른 양식에서 참조 할 수 있도록 public으로 만들 수 있는지 궁금합니다. 내가 지금까지 가지고있는 코드는 아래에 있지만, 내가 공개하거나 어떻게 만들지는 모른다.C# 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); 

     } 

    } 
} 

}

답변

2

나는 이런 식으로하지 말 것을 제안합니다. dataBase에 액세스하려면 고유 한 클래스를 사용하는 것이 가장 좋습니다. 여기에서 dataBase와 상호 작용할 모든 메소드 (쿼리 선택, 삽입, 업데이트 및 삭제)가 있습니다. 모든 단일 메서드에는 자체 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! 
     } 
    } 
} 

는 희망이 도움이, 미챠

1

나는 당신의 연결 개체는 클래스의 필드 또는 속성에 개최되고 있으리라 믿고있어. 필드 또는 속성이 비공개 인 경우에도 일반적으로 그렇게하는 것은 좋지 않습니다.

연결을 로컬 변수로 유지하는 것이 가장 좋습니다. 최대한 늦게 열고 가능한 한 일찍 닫으십시오. using 블록에 포장하는 것이 좋습니다.

0

양식에서 연결을 추출하여 자체 클래스로 추출해야합니다. 즉, DataHandling이라고 할 수 있습니다. 이 양식을 양식에 전달하면 사용할 수 있습니다.

:-)