2011-09-08 50 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此连接。 这是一个古老的答案,但仍然有人可以使用它。

相关问题