小弟遇到一个问题,在使用Datagridview控件的时候,由于与数据库连接部分的代码全部封装在一个类中,主页代码无法取得sqldataAdapter对象,不好用不用sqldataAdapter的UPdata()跟新,我要如何实现数据的跟新啊?小弟第一次提问。
下下是我的用法:
主页掉用:
DataSet ds = business.Getsspc_Tck_T2List();
bindingSource1.DataSource = ds.Tables[0];
dgvTck_T2.DataSource = bindingSource1;
实现绑定数据。
business.Getsspc_Tck_T2List()里面内容为:
 try
            {
                string err;
                string sql = "select ,ph,mesh_residue,paperkind_c,weight_c from spc_tck_t2 where sampdate=to_date( '" + sampdate + " ', 'yyyy-mm-dd   hh24:mi:ss ') ";                logger.Debug(sql);
                DataSet ds = helper.ShowDataTbAd(sql, out err);
                logger.Info("从spc_tck_t2表中查询记录,日期为:   " + sampdate);
                return ds;
            }
            catch(Exception ex)
            {                MessageBox.Show(ex.ToString());
                logger.Error("从spc_tck_t2表中查询记录,原因为:   " + ex.ToString());
                return null;
 
            }
最后通过helper.ShowDataTbAd(sql, out err);连接数据库:
 public DataSet ShowData(string str, out string err)
        {
            Open_db();
            datadap = new OracleDataAdapter(str, oracleConnection1);
            OracleDataSetDll.OracleDataSet ods = new OracleDataSetDll.OracleDataSet();            OracleCommandBuilder TckBuilder = new OracleCommandBuilder(datadap);
            datadap.MissingSchemaAction = MissingSchemaAction.AddWithKey;//把表的主键天加到 dataset当中去
            
            try
            {
                
                datadap.Fill(ods, "Table");
            
                err = "OK";
                return (DataSet)ods;
                
            }
            catch (Exception e)
            {
                err = e.Message;
                throw e;
                //return null;
            }
            finally
            {
                Close_db();
            }我该怎么做啊,主界面没有定义dataAdapter,怎样更新Datagridview里面的数据????

解决方案 »

  1.   

    datadap是全局的就可以用UPdata()
    但是datadap 只能使用一次。否则被覆盖了就不是你要跟新的数据了。
    换言之 ShowData()方法在跟新数据之前只能在Getsspc_Tck_T2List()方法里用一次、
      

  2.   

    1、你在主页定义一个SqlDataAdapter对象da
    2、修改business.Getsspc_Tck_T2List()方法为business.Getsspc_Tck_T2List(SqlDataAdapter da)
    3、然后在Getsspc_Tck_T2List()方法里面去实例化da,并通过da去取数据。(尽量不要使用全局变量)
    //由于你的SqlDataAdapter对象是在方法ShowDataTbAd中实例化的,所以你还应该修改该方法的签名,加上参数da