2011-09-08 51 views
2

我使用這個連接到我的SQL數據庫。如何將我的SQL連接放在單獨的類中? C#

namespace WindowsFormsApplication1 
{ 
    public partial class InvoiceGUI : Form 
    { 
     System.Data.SqlClient.SqlConnection con; 
     System.Data.SqlClient.SqlDataAdapter da; 
     DataSet ds1; 
     DataRow dRow; 

     int MaxRows = 0; 
     int inc = 0; 

     public InvoiceGUI() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      con = new System.Data.SqlClient.SqlConnection(); 
      ds1 = new DataSet(); 

      con.ConnectionString = "Data Source=(local);Initial Catalog=invoice_db;Integrated Security=SSPI"; 

      con.Open(); 
      //MessageBox.Show("open"); 

      string sql = "select * from invoice"; 
      da = new System.Data.SqlClient.SqlDataAdapter(sql, con); 

      da.Fill(ds1, "Invoice"); 
      NavigateInvoice(); 

      //Set the max rows 
      MaxRows = ds1.Tables["Invoice"].Rows.Count; 

      con.Close(); 
      //MessageBox.Show("closed"); 

     } 

如何將連接移動到單獨的類以及如何從另一個類(Windows窗體)訪問我的數據庫?
我想這是最好有在一個類中的連接和前WindowsForm2達到它

請給我一個例子

+0

復刻,你應至少建立一個分離的類庫項目,你可以調用DAT(數據訪問層),也可以是你的窗口同樣的解決方案裏面窗體應用程序。 SQL連接應創建和消費只有從那裏,你將有公共方法,讓你可以指定一個表名或存儲過程的名稱,你會從那裏獲取數據表。在這個網上,並在這樣的文章...... –

+0

你也可能想看看使用PetaPoco /小巧玲瓏或塊狀,而不是原始ADO.NET充沛 –

回答

0

你應該總是移動數據訪問相關的代碼到單獨的類/ DLL如數據訪問層。

而不是寫自己的數據訪問代碼,你可以像使用企業Libray數據訪問塊/ ORM框架能方便接口和配置來操作各種數據庫現成的數據訪問組件。

請參考鏈接,企業圖書館信息 http://entlib.codeplex.com/

使用企業庫,所有你寫在你的數據訪問層下面的代碼,並返回實體對象(而不是數據集)返回給調用層或UI。

string sSql = "select * from customers"; 
    Database dbNorthwind = DatabaseFactory.CreateDatabase(); 
    DBCommandWrapper cmdCust = dbNorthwind.GetSqlStringCommandWrapper(sSql); 
    DataSet dsCust = dbNorthwind.ExecuteDataSet(cmdCust); 
    dataGrid1.DataSource = dsCust.Tables[0].DefaultView; 

連接字符串將保留在配置文件中,因此您可以靈活地更改它。

希望這會有所幫助。 克里希納

2

試試這個:
1.創建類,例如ConnectionClass.cs
2.將下面的代碼到其中:

class clsConnectionClass:IDisposable 
{ 
    public SqlConnection cnn; 

    public clsConnectionClass() 
    { 
     if ((cnn = _cnn()) == null) 
     { 
      this.Dispose(); 
     } 
    } 

    private SqlConnection _cnn() 
    { 
     SqlConnection conn = null; 
     string server = "Your server address or name"    
     string db = "Your dadabase name"; 

     cnnString = string.Format("Server={0};Database={1};Trusted_Connection=SSPI;",server,db); 
     try 
     { 
      conn = new SqlConnection(); 
      conn.ConnectionString = cnnString; 
      conn.Open(); 
      return conn; 
     } 
     catch 
     { 
      conn.Dispose(); 
      return null; 
     } 
    } 
    public void Dispose() 
    { 
     if (cnn != null) 
     { 
      cnn.Dispose(); 
     } 
    } 
} 


3.在計劃類創建這個類的靜態對象和主要函數初始化。

static class Program 
{ 
    public static SystemParams.clsConnectionClass conn; 
    [STAThread] 
    static void Main() 
    { 
      conn = new SystemParams.clsConnectionClass(); 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Shared.frmMain());   
    } 
} 


現在你可以使用從程序的任何地方像Program.conn.cnn此連接。 這是一個古老的答案,但仍然有人可以使用它。

相關問題