情况是这样的
1.我用厂商提供的dll从考勤机上下载了人员信息,从中获取了人员信息(下载中有一个参数是Base64,考勤机牌子是中控)
2.然后用存储过程更新到数据库中,郁闷的是每个姓名总是:@姓名+ ?? 
3.写一个查询,结果姓名又能正常显示
想问一下有没有人知道问题可能处在什么地方

解决方案 »

  1.   

    更新方法如下:
     SqlCommand cmd = new SqlCommand("downloadUser", this.con);
      cmd.CommandType = CommandType.StoredProcedure;
     cmd.Parameters.Add("@userid", SqlDbType.Int);
    cmd.Parameters.Add("@name", SqlDbType.NVarChar);
     cmd.Parameters.Add("@cardno", SqlDbType.VarChar );
    while (czkem.GetAllUserInfo(machineId,ref dwEnrollNumber, ref name,ref password ,ref privilege,ref enabled ))
    {
    cmd.Parameters["@userid"].Value =dwEnrollNumber ;
             
    cmd.Parameters["@name"].Value = name;
    czkem.GetStrCardNumber(out cardno);                      
    cmd.Parameters["@cardno"].Value =Convert.ToInt32(cardno).ToString("0000000000");
    cmd.ExecuteNonQuery();                     
     }downloadUser 存储过程如下:create procedure [dbo].[downloadUser] @userid int,@name nvarchar(50) ,@cardno varchar(20)
    as
    begin
    if exists(select * from userinfo where userid=@userid) 
    update userinfo set [name]=@name ,cardno=@cardno where userid=@userid
    else
    insert userinfo(userid,[name],cardno) values(@userid,convert(nvarchar,@name),@cardno) 
    end