请问开发 WIN forms 的数据库相关软件是不是每一个FORM中都要拉一个oleDbConnection1的连接控件 C#中有没有一个像DELPHI中专门用来放数据库控件的面板 DATA面板窗体呢我感觉在C#中拉的控件一多。。很占用地盘~~下面一长串的非可视控件。

解决方案 »

  1.   

    如果你喜欢在开发form程序时,全部依靠托拽的方法来完成设计工作,就会出现你那样的问题,应该在设计的时候使用OOP的方式,让整个系统更有层次性,这样,在开发过程中就可以更加清晰。如:创建一个类,专门用于访问数据库操作,返回DataSet or DataTable数据。在Form中,调用这个类的访问来得到数据,就避免了使用过多的DB连接控件。
      

  2.   


    private SqlConnection LNConn;
    private bool isOpen;private void OpenData(string Server,string DataBase,string LoginName,string Password)
    { string ConnectionStr = "server = (local);uid = sa;pwd = ;database = MYDB; "; this.LNConn = new SqlConnection(ConnectionStr);
    LNConn.Open(); if (LNConn.State == ConnectionState.Open)
    {
       isOpen = true;
                 
    }
    else
    {
      isOpen = false;
    }
    }public DataSet OpenDataset(string SQL,string Table)
    {
         DataSet tRst = new DataSet();
         if (isOpen == true )
    try
    {
    SqlCommand cmd = new SqlCommand(SQL,LNConn);
    SqlDataAdapter tDA = new SqlDataAdapter(cmd); tDA.Fill(tRst,Table);

    }
    catch(SqlException ex)
    {
    MessageBox.Show(ex.Errors[0].Message  );
    }
        }
        return tRst;
    }public DataTable OpenDataTable(string SQL)
    {
        DataSet tRst = new DataSet();
    DataTable tDTbl=new DataTable() ;
    try
    {
    SqlCommand cmd = new SqlCommand(SQL,LNConn);
    SqlDataAdapter tDA = new SqlDataAdapter(cmd); tDA.Fill(tRst,"tmptable");
    tDTbl = tRst.Tables["tmptable"];
    }
    catch(SqlException ex)
    {
    //MessageBox.Show("Faild to Assign Data!1");
    MessageBox.Show(ex.Errors[0].Message  );
    }
    return tDTbl;
    }
      

  3.   

    好方法,学习,创建一个数据库类,这个就好像delphi中的datamoudle阿,这样可以使很多别的form共用这个数据组件阿!!