在C#中建立了一个存储过程,其中有一字段为BINARY(8)类型:
cmd.CommandText = "CREATE PROCEDURE add_emp(" +
        "IN fname CHAR(10),IN fpwd CHAR(16),IN friqi DATE,IN fxian BINARY(8)) " +
        "BEGIN INSERT INTO user(name,pwd,riqi,cuanxian) " +
        "VALUES(fname,fpwd,friqi,fxian); END";但是插入时如何为fxian参数传值才行?下面是传递参数:
   conn.Open();
                cmd.Connection = conn;                cmd.CommandText = "add_emp";
                cmd.CommandType = CommandType.StoredProcedure;                cmd.Parameters.Add("?fname", "admin ");
                cmd.Parameters["?fname"].Direction = ParameterDirection.Input;                cmd.Parameters.Add("?fpwd", "1 ");
                cmd.Parameters["?fpwd"].Direction = ParameterDirection.Input;                cmd.Parameters.Add("?friqi", DateTime.Today);
                cmd.Parameters["?friqi"].Direction = ParameterDirection.Input;
                                 
                cmd.Parameters.Add("?fxian","ab ");
                cmd.Parameters["?fxian"].Direction = ParameterDirection.Input;                cmd.ExecuteNonQuery();                MessageBox.Show("执行成功!");执行后出错,提示如下:
Error 0 has occurred:Exception during execution of 'add_emp':Unhandled type encountered

解决方案 »

  1.   

    你直接用STRING 就可以了。
      

  2.   

    请问是传给的值是string还是在建立过程时IN fxian BINARY(8))写成IN Fxian string? 如果是传参数时string,
    我也试过了,还是会出现那个错误!
      

  3.   

    本帖最后由 yueliangdao0608 于 2008-05-04 20:46:52 编辑
      

  4.   

    抱歉,我试了网页上的示例,还是不行,还是出现同样的错误。
    但是我在建立存储过程时如果把Binary字段改为char,再传char值就正常可以写进去。
    cmd.CommandText = "CREATE PROCEDURE add_emp(" +
            "IN fname CHAR(10),IN fpwd CHAR(16),IN friqi DATE,IN fxian char(8)) " +
            "BEGIN INSERT INTO user(name,pwd,riqi,cuanxian) " +
            "VALUES(fname,fpwd,friqi,fxian); END";
      

  5.   

    为什么字段还是Binary,传存储过程设为char,还能正常传值写入成功呢?
      

  6.   

    楼主这个问题解决没,我也遇到同样的问题,存储过程里只有nvarchar和int类型但报这个错Unhandled type encountered,急需解决方案