public static DataSet ds = new DataSet();
public string errMsg = "";
/// <summary>
/// 根据林总要求,动态生成语句,并且最加到一个DataSet内 第一个方法
/// </summary>
/// <param name="list">测点数组</param>
/// <param name="bTime">开始时间</param>
/// <param name="eTime">结束时间</param>
/// <param name="errMsg"></param>
/// <returns>DataSet</returns>
public static DataTable retrunManyDS(ArrayList list, string bTime, string eTime, out string errMsg)
{ DB2Connection con = new DB2Connection();
DB2Command cmd = new DB2Command();
DB2DataReader dr = null;
ArrayList ls = new ArrayList(); Model.valuePP pp = new valuePP(); //动态的加载一个DataTable
DataTable dt = new DataTable();
dt.Columns.Add("POINTID", typeof(string));
dt.Columns.Add("DT", typeof(string));
dt.Columns.Add("VALUE", typeof(string));
dt.Columns.Add("STATE", typeof(string));
dt.Columns.Add("INPUTTYPE", typeof(string)); try
{
string tbName = "";
con = GetConn(); for (int i = 0; i < list.Count; i++)
{ string sql = "select d.存储表名字 from administrator.T_DAM_DAMPOINT as d where d.测点名 ='" + list[i].ToString() + "'";
cmd.Connection = con;
cmd.CommandText = sql;
dr = cmd.ExecuteReader(); while (dr.Read())
{
tbName = dr[0].ToString();
#region 原来方法
//select * from administrator.VALUE_CG1 as v where v.POINTID='WXJP:DAM-HN11CG1H001' and char(v.DT) > '2000-01-01 ' and char(v.DT)<'2009-02-15 '
//ds= DB_RunDataSet(sqlInfo, out errMsg);
//cmd1.Connection = con;
//cmd.CommandText = sqlInfo; //dr1 = cmd.ExecuteReader(); //while (dr1.Read())
//{
// pp.POINTID = dr1[0].ToString();
// pp.DT = dr1[1].ToString();
// pp.value = dr1[2].ToString();
// pp.state = dr1[3].ToString();
// pp.inputtype = dr[4].ToString();
//} //ls.Add(pp);
#endregion
} ls = returnArrayList(tbName, list[i].ToString(), bTime, eTime); for (int j = 0; j < ls.Count;j++)
{
pp =(Model.valuePP)ls[i]; DataRow dw = dt.NewRow(); dw[0] = pp.POINTID;
dw[1] = pp.DT;
dw[2] = pp.value;
dw[3] = pp.state;
dw[4] = pp.inputtype; dt.Rows.Add(dw);
} cmd.Dispose();
}
}
catch (Exception ce)
{
errMsg = ce.Message;
}
finally
{
CloseConn(con);
}
errMsg = "测试";
return dt;
}
/// <summary>
/// 第二个方法
/// </summary>
/// <param name="tName"></param>
/// <param name="pid"></param>
/// <param name="bTime"></param>
/// <param name="eTime"></param>
/// <returns></returns>
public static ArrayList returnArrayList(string tName, string pid, string bTime, string eTime)
{
DB2Connection con = new DB2Connection();
DB2Command cmd = new DB2Command();
DB2DataReader dr = null; ArrayList list = new ArrayList();
Model.valuePP pp = new valuePP();
try
{
con = GetConn(); string sqlInfo = "select * from administrator." + tName + " as v where v.POINTID='" + pid + "' and char(v.DT)> '" + bTime + "' and char(v.DT)<'" + eTime + "'"; cmd.Connection = con;
cmd.CommandText = sqlInfo; dr = cmd.ExecuteReader(); while(dr.Read())
{
pp.POINTID = dr[0].ToString();
pp.DT = dr[1].ToString();
pp.value = dr[2].ToString();
pp.state = dr[3].ToString();
pp.inputtype = dr[4].ToString(); list.Add(pp);
}
//list.Add(pp);
}
catch (Exception e)
{
}
finally {
CloseConn(con);
} return list;
}
说我的DB2Command 当前正忙 Fetching。就是这段代码,怎么回事!高手支教~~~怎么改啊~~~~~我已经Dispose了啊?怎么还不可以呢?
public string errMsg = "";
/// <summary>
/// 根据林总要求,动态生成语句,并且最加到一个DataSet内 第一个方法
/// </summary>
/// <param name="list">测点数组</param>
/// <param name="bTime">开始时间</param>
/// <param name="eTime">结束时间</param>
/// <param name="errMsg"></param>
/// <returns>DataSet</returns>
public static DataTable retrunManyDS(ArrayList list, string bTime, string eTime, out string errMsg)
{ DB2Connection con = new DB2Connection();
DB2Command cmd = new DB2Command();
DB2DataReader dr = null;
ArrayList ls = new ArrayList(); Model.valuePP pp = new valuePP(); //动态的加载一个DataTable
DataTable dt = new DataTable();
dt.Columns.Add("POINTID", typeof(string));
dt.Columns.Add("DT", typeof(string));
dt.Columns.Add("VALUE", typeof(string));
dt.Columns.Add("STATE", typeof(string));
dt.Columns.Add("INPUTTYPE", typeof(string)); try
{
string tbName = "";
con = GetConn(); for (int i = 0; i < list.Count; i++)
{ string sql = "select d.存储表名字 from administrator.T_DAM_DAMPOINT as d where d.测点名 ='" + list[i].ToString() + "'";
cmd.Connection = con;
cmd.CommandText = sql;
dr = cmd.ExecuteReader(); while (dr.Read())
{
tbName = dr[0].ToString();
#region 原来方法
//select * from administrator.VALUE_CG1 as v where v.POINTID='WXJP:DAM-HN11CG1H001' and char(v.DT) > '2000-01-01 ' and char(v.DT)<'2009-02-15 '
//ds= DB_RunDataSet(sqlInfo, out errMsg);
//cmd1.Connection = con;
//cmd.CommandText = sqlInfo; //dr1 = cmd.ExecuteReader(); //while (dr1.Read())
//{
// pp.POINTID = dr1[0].ToString();
// pp.DT = dr1[1].ToString();
// pp.value = dr1[2].ToString();
// pp.state = dr1[3].ToString();
// pp.inputtype = dr[4].ToString();
//} //ls.Add(pp);
#endregion
} ls = returnArrayList(tbName, list[i].ToString(), bTime, eTime); for (int j = 0; j < ls.Count;j++)
{
pp =(Model.valuePP)ls[i]; DataRow dw = dt.NewRow(); dw[0] = pp.POINTID;
dw[1] = pp.DT;
dw[2] = pp.value;
dw[3] = pp.state;
dw[4] = pp.inputtype; dt.Rows.Add(dw);
} cmd.Dispose();
}
}
catch (Exception ce)
{
errMsg = ce.Message;
}
finally
{
CloseConn(con);
}
errMsg = "测试";
return dt;
}
/// <summary>
/// 第二个方法
/// </summary>
/// <param name="tName"></param>
/// <param name="pid"></param>
/// <param name="bTime"></param>
/// <param name="eTime"></param>
/// <returns></returns>
public static ArrayList returnArrayList(string tName, string pid, string bTime, string eTime)
{
DB2Connection con = new DB2Connection();
DB2Command cmd = new DB2Command();
DB2DataReader dr = null; ArrayList list = new ArrayList();
Model.valuePP pp = new valuePP();
try
{
con = GetConn(); string sqlInfo = "select * from administrator." + tName + " as v where v.POINTID='" + pid + "' and char(v.DT)> '" + bTime + "' and char(v.DT)<'" + eTime + "'"; cmd.Connection = con;
cmd.CommandText = sqlInfo; dr = cmd.ExecuteReader(); while(dr.Read())
{
pp.POINTID = dr[0].ToString();
pp.DT = dr[1].ToString();
pp.value = dr[2].ToString();
pp.state = dr[3].ToString();
pp.inputtype = dr[4].ToString(); list.Add(pp);
}
//list.Add(pp);
}
catch (Exception e)
{
}
finally {
CloseConn(con);
} return list;
}
说我的DB2Command 当前正忙 Fetching。就是这段代码,怎么回事!高手支教~~~怎么改啊~~~~~我已经Dispose了啊?怎么还不可以呢?
{
pp.POINTID = dr[0].ToString();
pp.DT = dr[1].ToString();
pp.value = dr[2].ToString();
pp.state = dr[3].ToString();
pp.inputtype = dr[4].ToString(); list.Add(pp);
}这段代码后面加dr.Close();
{ }
dr.dispose();
dr.Close();