string CmdText = "select TARGETTABLE,ISCURRENTDB,DBCONSTRING from DW_B_SSJKB_DUMPSETTING where SOURCETABLE = 'DWSSJK.DW_TX_SSJK_HISTORY_DATA'";
DataSet ds = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
if (ds.Tables[0].Rows[0][ISCURRENTDB] == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
}如果执行
ds.Tables[0].Rows[0][ISCURRENTDB] == '0' 为真那么 执行完后
ds.Tables[0] 是上面一句的 SqlHelper.ExecuteDataSet 执行结果的表 还是下面一句 SqlHelper.ExecuteDataSet 执行结果的表
如果是上面的 那下面的是 ds.Tables[1] 吗 ?
如果是下面的 那上面的 哪里去了?
DataSet ds = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
if (ds.Tables[0].Rows[0][ISCURRENTDB] == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
}如果执行
ds.Tables[0].Rows[0][ISCURRENTDB] == '0' 为真那么 执行完后
ds.Tables[0] 是上面一句的 SqlHelper.ExecuteDataSet 执行结果的表 还是下面一句 SqlHelper.ExecuteDataSet 执行结果的表
如果是上面的 那下面的是 ds.Tables[1] 吗 ?
如果是下面的 那上面的 哪里去了?
SqlHelper.ExecuteDataSet每次都会创建一个DataSet返回回来,
第一次执行得到一个DataSet对象,并且ds指向这个对象
第二次执行得到另一个DataSet对象,并且ds指向这个新的对象
这就导致第一个DataSet没有变量指向它,所以它再也访问不到了。
如果滿足條件執行到if里面的語句的話,ds.tables[0]應該是后面一條語句得到的table,把之前的table覆蓋了
不過你完全可以輸出一下,驗證一下到底是哪一個。
string CmdText = "select TARGETTABLE,ISCURRENTDB,DBCONSTRING from DW_B_SSJKB_DUMPSETTING where SOURCETABLE = 'DWSSJK.DW_TX_SSJK_HISTORY_DATA'";
DataSet ds = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
这个dataset是DW_B_SSJKB_DUMPSETTING 的
if (!(ds.Tables(0).Rows(0).Item("ISCURRENTDB") + "" == System.DBNull.Value))
{ //最好判断一下又没有数据
if (ds.Tables(0).Rows(0).Item("ISCURRENTDB") == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是现在的,前面的ds已经被清空。
}
}
string CmdText = "select TARGETTABLE,ISCURRENTDB,DBCONSTRING from DW_B_SSJKB_DUMPSETTING where SOURCETABLE = 'DWSSJK.DW_TX_SSJK_HISTORY_DATA'";
DataSet ds = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是DW_B_SSJKB_DUMPSETTING 的
if (!(ds.Tables(0).Rows(0).Item("ISCURRENTDB") + "" == System.DBNull.Value))
{ //最好判断一下又没有数据
if (ds.Tables(0).Rows(0).Item("ISCURRENTDB") == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是现在的,前面的ds已经被清空。
}
}
如果我要 想保存第一个该怎么办?
重新定义一个 还是使用 FILL?
fill怎么使用?
DataSet ds2=""
如果想保存两个ds,必须名字不同
string CmdText = "select TARGETTABLE,ISCURRENTDB,DBCONSTRING from DW_B_SSJKB_DUMPSETTING where SOURCETABLE = 'DWSSJK.DW_TX_SSJK_HISTORY_DATA'";
ds1 = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是DW_B_SSJKB_DUMPSETTING 的
if (!(ds1.Tables[0].Rows[0].Item["ISCURRENTDB"] + "" == System.DBNull.Value))
{ //最好判断一下又没有数据
if (ds1.Tables[0].Rows[0].Item["ISCURRENTDB"] == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds2 = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是现在的,数据填充到ds2。 读取 :ds2.Tables(0).Rows(0).Item("xx")}
}
DataSet ds1=""
DataSet ds2=""
如果想保存两个ds,必须名字不同
string CmdText = "select TARGETTABLE,ISCURRENTDB,DBCONSTRING from DW_B_SSJKB_DUMPSETTING where SOURCETABLE = 'DWSSJK.DW_TX_SSJK_HISTORY_DATA'";
ds1 = SqlHelper.ExecuteDataSet(SqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是DW_B_SSJKB_DUMPSETTING 的
if (!(ds1.Tables[0].Rows[0].Item["ISCURRENTDB"] + "" == System.DBNull.Value))
{ //最好判断一下又没有数据
if (ds1.Tables[0].Rows[0].Item["ISCURRENTDB"] == '0')
{
CmdText = "select VALUE_TIME,TAG_VALUE from DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS,DWSSJK.DW_TX_SSJK_HISTORY_DATA"
+ "where (DWSSJK.DW_TX_SSJK_HISTORY_DATA_HIS.VALUE_TIME between startTime and endTime )"
+ "and (DWSSJK.DW_TX_SSJK_HISTORY_DATA.VALUE_TIME between startTime and endTime)";
ds2 = SqlHelper.ExecuteDataSet(sqlConnectionString, CmdText, "SqlConnectionString");
//这个dataset是现在的,数据填充到ds2。DS1就不会被覆盖, 读取 :ds2.Tables[0].Rows[0].Item["ISCURRENTDB"] }
}
DataSet ds1;
DataSet ds2;
真的不用定义两个dataset