我用reflector 反编了一个程序,swicth反编成了goto之类的,有错误,哪位高手帮我看看,怎么修改。 for (int i1 = 0; i1 < sqlParams.Length; i1++)
{
string s = sqlParams[i1].DataType;
if (s == System.String.Empty)
goto label_1;
switch (s)
{
case "Int16\uFFFD":
case "Int32\uFFFD":
case "Int64\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
break; case "Double\uFFFD":
case "Decimal\uFFFD":
case "Single\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Double);
break; case "DateTime\uFFFD":
case "TimeSpan\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
break; case "Byte[]\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Blob);
break; case "String\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, 10000);
break; default:
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, sqlParams[i1].Value);
goto label_2;
label_1:
object obj1 = sqlParams[i1].Value;
if (obj1.GetType() == typeof(System.DateTime))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
}
else if (obj1.GetType() == typeof(string))
{
int i2 = obj1.ToString().Length;
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, i2 == 0 ? 1 : i2);
}
else if (obj1.GetType() == typeof(int))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
}
else if (obj1.GetType().Name.Equals("DataTable\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Cursor);
}
else if (obj1.GetType().Name.Equals("OracleType.Clob\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Clob);
}
else
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, obj1);
}
break;
}
label_2:
oracleParameter.Direction = sqlParams[i1].Direction;
_Cmd.Parameters.Add(oracleParameter);
}
}
另外 原来也有个final的错误,代码如下
~OracleWrapper()
{
try
{
Close();
}
catch
{
}
finally
{
base.Finalize();
}
}我直接修改成了。
~OracleWrapper()
{
Close();
}
这样应该没问题吧,或者指导一下改成什么样比较合适,是否要保留try catch.谢谢。
{
string s = sqlParams[i1].DataType;
if (s == System.String.Empty)
goto label_1;
switch (s)
{
case "Int16\uFFFD":
case "Int32\uFFFD":
case "Int64\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
break; case "Double\uFFFD":
case "Decimal\uFFFD":
case "Single\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Double);
break; case "DateTime\uFFFD":
case "TimeSpan\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
break; case "Byte[]\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Blob);
break; case "String\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, 10000);
break; default:
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, sqlParams[i1].Value);
goto label_2;
label_1:
object obj1 = sqlParams[i1].Value;
if (obj1.GetType() == typeof(System.DateTime))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
}
else if (obj1.GetType() == typeof(string))
{
int i2 = obj1.ToString().Length;
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, i2 == 0 ? 1 : i2);
}
else if (obj1.GetType() == typeof(int))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
}
else if (obj1.GetType().Name.Equals("DataTable\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Cursor);
}
else if (obj1.GetType().Name.Equals("OracleType.Clob\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Clob);
}
else
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, obj1);
}
break;
}
label_2:
oracleParameter.Direction = sqlParams[i1].Direction;
_Cmd.Parameters.Add(oracleParameter);
}
}
另外 原来也有个final的错误,代码如下
~OracleWrapper()
{
try
{
Close();
}
catch
{
}
finally
{
base.Finalize();
}
}我直接修改成了。
~OracleWrapper()
{
Close();
}
这样应该没问题吧,或者指导一下改成什么样比较合适,是否要保留try catch.谢谢。
解决方案 »
- 申请QQ网页中,怎么使用WebBrowser对生日下拉框填充
- datagrid滚动条能使用,但不显示
- 达人帮助,c# 里 a.aspx页的OnClick触发b.aspx页的事件怎么做啊
- 请大家推荐几本除了MSDN外比较好的C#电子书
- C#中怎么做到这样的stylevar["charset"]下标为字符串的数组?
- c# 创建的pictruebox PictureBoxSizeMode.StretchImage 无效,求大神帮忙,在线等~~
- 请教一个有关listview的问题!
- 数据更新的问题
- 学习C#那本书比较好?
- 请问什么地方有 C# 的类似于 从入门到精通 这样的教程没有,其实我就是想入门,嘻嘻……
- OleDbConnection中的连接字符串中的Data Sources可以用相对路径吗?
- 如何知道file.copy已经成功考贝文件
for (int i1 = 0; i1 < sqlParams.Length; i1++)
{
string s = sqlParams[i1].DataType;
if (s == System.String.Empty)
{
object obj1 = sqlParams[i1].Value;
if (obj1.GetType() == typeof(System.DateTime))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
}
else if (obj1.GetType() == typeof(string))
{
int i2 = obj1.ToString().Length;
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, i2 == 0 ? 1 : i2);
}
else if (obj1.GetType() == typeof(int))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
}
else if (obj1.GetType().Name.Equals("DataTable\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Cursor);
}
else if (obj1.GetType().Name.Equals("OracleType.Clob\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Clob);
}
else
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, obj1);
}
}
else
{
switch (s)
{
case "Int16\uFFFD":
case "Int32\uFFFD":
case "Int64\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
break; case "Double\uFFFD":
case "Decimal\uFFFD":
case "Single\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Double);
break; case "DateTime\uFFFD":
case "TimeSpan\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
break; case "Byte[]\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Blob);
break; case "String\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, 10000);
break; default:
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, sqlParams[i1].Value);
oracleParameter.Direction = sqlParams[i1].Direction;
_Cmd.Parameters.Add(oracleParameter);
break;
}
}
}
}
上面看掉了
for (int i1 = 0; i1 < sqlParams.Length; i1++)
{
string s = sqlParams[i1].DataType;
if (s == System.String.Empty)
{
object obj1 = sqlParams[i1].Value;
if (obj1.GetType() == typeof(System.DateTime))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
}
else if (obj1.GetType() == typeof(string))
{
int i2 = obj1.ToString().Length;
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, i2 == 0 ? 1 : i2);
}
else if (obj1.GetType() == typeof(int))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
}
else if (obj1.GetType().Name.Equals("DataTable\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Cursor);
}
else if (obj1.GetType().Name.Equals("OracleType.Clob\uFFFD"))
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Clob);
}
else
{
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, obj1);
}
oracleParameter.Direction = sqlParams[i1].Direction;
_Cmd.Parameters.Add(oracleParameter); }
else
{
switch (s)
{
case "Int16\uFFFD":
case "Int32\uFFFD":
case "Int64\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Int32);
break; case "Double\uFFFD":
case "Decimal\uFFFD":
case "Single\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Double);
break; case "DateTime\uFFFD":
case "TimeSpan\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.DateTime);
break; case "Byte[]\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.Blob);
break; case "String\uFFFD":
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, System.Data.OracleClient.OracleType.VarChar, 10000);
break; default:
oracleParameter = new System.Data.OracleClient.OracleParameter(sqlParams[i1].Name, sqlParams[i1].Value);
oracleParameter.Direction = sqlParams[i1].Direction;
_Cmd.Parameters.Add(oracleParameter);
break;
}
}
}
}
第一段 if 为什么还要加上 lable2 的代码呢?不太明白。
_Cmd.Parameters.Add(oracleParameter);