关于C#的循环问题,谢谢大家,菜鸟帮忙解决一下问题谢谢了谢谢!!!!!!
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的值又变了,要怎么搞啊???