关于C#的循环问题,谢谢大家,菜鸟帮忙解决一下问题谢谢了谢谢!!!!!!

zoulizhong 2009-06-26 05:45:46
if (strDsName == "54数据源")
{
MessageBox.Show("您打开的数据源54数据源!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
try
{

//设定X和Y的坐标
double XIANX_Coord = 0.0;
double XIANY_Coord = 0.0;
//对数据库进行操作,把数据库中的点坐标取出

string strConnection = "Data Source=MYGIS;User ID=dzfx;Password=dzfx;Unicode=True";
OracleConnection MyOracleConnection = new OracleConnection();
MyOracleConnection.ConnectionString = strConnection;
DataTable MyTable1 = new DataTable();
DataTable MyTable2 = new DataTable();

string strSql1 = "select distinct plot.PL_GUID FROM SZF_PNT_COORD coord, SZF_PLOT plot,SZF_GY_TAC tac,SZF_GY_JSXM jsxm WHERE coord.PL_GUID=plot.PL_GUID AND plot.SB_GUID=tac.SB_GUID AND plot.SB_GUID=jsxm.JSXM_GUID AND tac.COORD_SYS LIKE'80%' ORDER BY plot.PL_GUID";
OracleCommand MyOracleCommand1 = new OracleCommand();
MyOracleCommand1.Connection = MyOracleConnection;
MyOracleCommand1.CommandText = strSql1;


MyOracleConnection.Open();
OracleDataAdapter MyOracleAdapter1 = new OracleDataAdapter();
MyOracleAdapter1.SelectCommand = MyOracleCommand1;
MyOracleAdapter1.Fill(MyTable1);


string strSql2 = "select coord.X_COORD,coord.Y_COORD,plot.PL_GUID FROM SZF_PNT_COORD coord, SZF_PLOT plot,SZF_GY_TAC tac,SZF_GY_JSXM jsxm WHERE coord.PL_GUID=plot.PL_GUID AND plot.SB_GUID=tac.SB_GUID AND plot.SB_GUID=jsxm.JSXM_GUID AND tac.COORD_SYS LIKE'80%' ORDER BY plot.PL_GUID";
OracleCommand MyOracleCommand2 = new OracleCommand();
MyOracleCommand2.Connection = MyOracleConnection;
MyOracleCommand2.CommandText = strSql2;
OracleDataAdapter MyOracleAdapter2 = new OracleDataAdapter();
MyOracleAdapter2.SelectCommand = MyOracleCommand2;
MyOracleAdapter2.Fill(MyTable2);


MyOracleConnection.Close();
soPoints ObjPts = new soPointsClass();

for (int i = 0; i < MyTable1.Rows.Count; i++)
{


for ( int j = 0; j < MyTable2.Rows.Count; j++)
{
string strKey1 = MyTable1.Rows[i][0].ToString();
string strKey2 = MyTable2.Rows[j][2].ToString();
if (strKey2 == strKey1)
{
XIANX_Coord = double.Parse(MyTable2.Rows[j][0].ToString());
XIANY_Coord = double.Parse(MyTable2.Rows[j][1].ToString());

ObjPts.Add2(XIANX_Coord, XIANY_Coord);

soGeoRegion ObjGeoRegion = new soGeoRegion();
ObjGeoRegion.AddPart(ObjPts);

soDataSource ObjDs;
ObjDs = axSuperWorkspace.Datasources["80数据源"];
soDataset ObjDt;
ObjDt = ObjDs.Datasets["西安坐标系"];

soDatasetVector ObjDtv;
ObjDtv = (soDatasetVector)ObjDt;
soRecordset ObjRt;
ObjRt = ObjDtv.Query("", true, null, "");
ObjRt.AddNew((soGeometry)ObjGeoRegion, true);
ObjRt.Update();

}
else
{
break;
}


}

//ReleaseCom(ObjGeoRegion);
//ReleaseCom(ObjDs);
//ReleaseCom(ObjDt);
//ReleaseCom(ObjDtv);
//ReleaseCom(ObjRt);

}
MessageBox.Show("插入数据成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (System.Exception Ex)
{
MessageBox.Show(Ex.ToString());
}



我一breaK的时候走到第一个循环了,那strKye1的值就变了,可是走到第二个的时候呢,因为j没有变化,所以strKey2还是第一次的值,程序往下运行的时候就又跳出,第三次的时候strKey1的值又变了,要怎么搞啊???


...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangziyi1291 2009-06-29
  • 打赏
  • 举报
回复
断点
zoulizhong 2009-06-29
  • 打赏
  • 举报
回复
我的意思是当循环第一次结束的时候,那strKey1的值就会变化,但是到第二个For循环的时候strKey2又是和第一次的一样了,因为是从0开始的,这样那个IF语句就不成立所以第二次结束,第三次又是那样,要怎么控制当i的值变化的时候,J的值是第一次循环之后的值,就是假设第一次是5,那第二次就是从6开始循环了!!!帮帮忙谢谢啊!
redleafe 2009-06-28
  • 打赏
  • 举报
回复
是不是想用Continue?
描述的不清楚。
lzc2125 2009-06-26
  • 打赏
  • 举报
回复
strKey1 是根据 i值来变化。
strKey2 是根据 j 值来变化。

break一触发,第二个循环就停止了,继续第一个循环的下一次循环。

楼主说想怎么做吧?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧