OleDbParameter[] op = { new OleDbParameter("@name", name), new OleDbParameter("@pass", pass)};
int i = sd.ExecSQL("update userInfo set userPass=@pass where userName=@name",op);public int ExecSQL(string SQLString,params OleDbParameter[] op)
    {
        try
        {
            conn.Open();
            cmd = new OleDbCommand(SQLString, conn);
            if (op != null)
            {
                foreach (OleDbParameter pa in op)
                    cmd.Parameters.Add(pa);
            }
            int rows=cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return rows;
        }
        catch
        {
            return -1;
        }
        finally
        {
            conn.Close();
        }
    }为什么rows一直为0啊?

解决方案 »

  1.   

    为什么把改成
    OleDbParameter[] op = {new OleDbParameter("@pass", pass)};
    int i = sd.ExecSQL("update userInfo set userPass=@pass where userName='"+name+"'",op);
    就对了?
    高手来啊
      

  2.   

    userName 是字符类型,在SQL 里面必须是userName='值',也就是必须要有单引号。
      

  3.   

    这个是拼接字符串,并不安全,如果是用传参数的话,要使用?代替@pass
    OleDbParameter[] op = new OleDbParameter[2];
    OleDbParameter[0] = new OleDbParameter("@pass",数据类型SqlDbType.NVchar);
    OleDbParameter[0].Value=pass
    OleDbParameter[1] = new OleDbPar;ameter("@name",数据类型SqlDbType.NVchar);
    OleDbParameter[1].Value=name;
    int i = sd.ExecSQL("update userInfo set userPass=? where userName=?",op);public int ExecSQL(string SQLString,params OleDbParameter[] op)
      {
      try
      {
      conn.Open();
      cmd = new OleDbCommand(SQLString, conn);
      if (op != null)
      {
      foreach (OleDbParameter pa in op)
      cmd.Parameters.Add(pa);
      }
      int rows=cmd.ExecuteNonQuery();
      cmd.Parameters.Clear();
      return rows;
      }
      catch
      {
      return -1;
      }
      finally
      {
      conn.Close();
      }
      }尝试下这个
      

  4.   

    OleDbParameter[] op = { new OleDbParameter("@name", name), new OleDbParameter("@pass", pass)};
    这个写法挺好的。
      

  5.   

    OleDbParameter[] op = { new OleDbParameter("@name", name), new OleDbParameter("@pass", pass)};
    这个写法挺好的。