本来SQL数据库更新完全正确,可换了ORACLE数据库后,删除可以,更新和增加却不成功了,单步调试时到comm.ExecuteNonQuery ();这一句就跳到try块去了,执行了“Response.Write ("<script>alert('更新失败!"+ex.Message +"');</script>");
”“更新失败”也没有跳出来public void update(Object sender,DataGridCommandEventArgs e)
{
string strCommand="UPDATE C_DICTIONARY SET NAME=@NAME,BOND_FIELD_NAME=@BOND_FIELD_NAME where ID=@ID" ;
    System.Data .OracleClient .OracleCommand comm=new OracleCommand (strCommand,conn);
comm.Parameters .Add (new  OracleParameter("@ID",OracleType.Number ,10) );//隐藏列,用来确定修改的行数
comm.Parameters .Add (new OracleParameter("@name",OracleType.VarChar2,20) );
comm.Parameters .Add (new OracleParameter("@Bond_field_name",OracleType.VarChar,40) );
           
comm.Parameters ["@ID"].Value =this.DataGrid1 .DataKeys [(int)e.Item .ItemIndex ];//用唯一列(隐藏)定位修改的行
comm.Parameters["@NAME"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
comm.Parameters["@BOND_FIELD_NAME"].Value=((TextBox)e.Item.Cells[3].Controls[0]).Text;conn.Open ();
try
{
comm.ExecuteNonQuery ();
Response.Write ("<script>alert('更新成功!');</script>");
    this.DataGrid1 .EditItemIndex =-1;
this.BindGrid ();
Response.Write ("<script language=javascript>self.parent.location.href='downframe.htm'</script>") ;//刷新整个框架页面
}
catch(System.Data.OracleClient .OracleException   ex)
{
Response.Write ("<script>alert('更新失败!"+ex.Message +"');</script>");
}
conn.Close ();
}
求高手指点!!!!

解决方案 »

  1.   

    probably it is due to the parameter names, in Oracle, you need use :ParameterName, seehttp://msdn2.microsoft.com/en-us/library/5xh44k5s.aspxstring strCommand="UPDATE C_DICTIONARY SET NAME=:NAME,BOND_FIELD_NAME=:BOND_FIELD_NAME where ID=:ID" ;
        System.Data .OracleClient .OracleCommand comm=new OracleCommand (strCommand,conn);
    comm.Parameters .Add (new  OracleParameter("ID",OracleType.Number ,10) );