if (string.IsNullOrEmpty(UserName.Text.Trim().ToString()) || string.IsNullOrEmpty(Name.Text.Trim().ToString()) || string.IsNullOrEmpty(password.Text.Trim().ToString()))
        {
            Response.Write("<Script>alert('用户名或姓名或密码为空,请输入');history.go(-1)</Script>");
            Response.End();
        }
        else
        {
           
           ZWDC_XT_USEREntity UserEntity = new ZWDC_XT_USEREntity();
           UserEntity.USER_NAME = UserName.Text.Trim().ToString();
           UserEntity.USER_CNAME = Name.Text.Trim().ToString();
           UserEntity.USER_PWD = password.Text.Trim().ToString();
          // LoginStr DLogin = new LoginStr();
          // DLogin.SysLogin(UserEntity);           OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleConn"].ToString());
           if (conn.State != ConnectionState.Open) { conn.Open(); }
           
          // string oracleStr = "loginstr";//存储过程
           OracleParameter[] LoginOP ={
                new OracleParameter(":uname2",UserEntity.USER_NAME),
                new OracleParameter(":namec2",UserEntity.USER_CNAME),
                new OracleParameter(":pasd2", UserEntity.USER_PWD)
            };           OracleCommand cmd = new OracleCommand("LOGINSTR", conn);
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.Parameters.AddRange(LoginOP);
           int a = cmd.ExecuteNonQuery();  提示信息为:内部 .Net Framework 数据提供程序错误 30。 
           if (a > 0)
           {
               Response.Write("1");           }
           else {               Response.Write("0");
           }
        }

解决方案 »

  1.   

    补充下oracle   
    create or replace procedure loginstr(UName out varchar2, pasd  out varchar2,namec  out varchar2,UName2 IN VARCHAR2,pasd2 IN VARCHAR2,namec2 in varchar2) is
    begin
        select User_name,User_pwd,User_Cname into Uname,pasd,namec from zwdc_xt_user where User_name=Uname2 and User_pwd=pasd2 and User_Cname=namec2;
    end loginstr;
      

  2.   

    问题找到了。  跟存储过程有关。
    OracleCommand cmd = new OracleCommand("LOGINSTR", conn);
               cmd.CommandType = CommandType.StoredProcedure;
     跟这里的有关。就是不知道怎么解决这个办法。
      

  3.   

    不要再析构函数中调用Connection, DataReader,或其他托管对象的Close()或Dispose()方法,析构函数中应当只是放类的非托管成员,如果类中不包含非托管成员不要创建析构函数。 这类问题通常由于跨线程访问了非线程安全的对象,即便你没有显示声明一个线程,但是CLR内部会有独立的线程。