strSql.Append("update HouseInfo set ");
  strSql.Append("hName=@hName");
  strSql.Append(" where houseId=@houseId ");
  OleDbParameter[] parameters = {
new OleDbParameter("@houseId", OleDbType.Integer,4),
new OleDbParameter("@hName", OleDbType.VarChar,50)};
  parameters[0].Value = model.houseId;
  parameters[1].Value = model.hName;
  try
  {
  int rows = OleDbHelper.ExecuteNonQuery(strSql.ToString(), parameters);
  result = true;
  }
  catch (Exception ex)
  {
  throw ex;
  }
执行完后,没有报错,但rows是0,不知道是什么原因。
SELECT * FROM [HouseInfo] where houseId=1执行也有数据

解决方案 »

  1.   

    OleDbHelper.ExecuteNonQuery 这个方法是怎么实现的啊
      

  2.   

    /// <summary>
            /// 执行SQL语句,返回影响的记录数
            /// </summary>
            /// <param name="SQLString">SQL语句</param>
            /// <returns>影响的记录数</returns>
            public static int ExecuteNonQuery(string SQLString, params OleDbParameter[] cmdParms)
            {
                using (OleDbConnection connection = new OleDbConnection(GetSqlConnection()))
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        try
                        {
                            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                            int rows = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                            return rows;
                        }
                        catch (System.Data.OleDb.OleDbException E)
                        {
                            throw new Exception(E.Message);
                        }
                    }
                }
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="cmd"></param>
            /// <param name="conn"></param>
            /// <param name="trans"></param>
            /// <param name="cmdText"></param>
            /// <param name="cmdParms"></param>
            private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                    cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;//cmdType;
                if (cmdParms != null)
                {
                    foreach (OleDbParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }
      

  3.   

    注意参数顺序
    参考:http://hi.baidu.com/jelinux/blog/item/e2efb918d3ba7d0b34fa410d.html
      

  4.   

    parameters  参数位置调下 跟sql语句中对应
    houseId放后 hName放前
      

  5.   

    obledbparameter参数要一致
    new OleDbParameter("@hName", OleDbType.VarChar,50),
    new OleDbParameter("@houseId", OleDbType.Integer,4)
      

  6.   

    参看我之前的一个帖子。http://topic.csdn.net/u/20100810/14/2273c1f1-631c-4b5d-8d71-8206a32dfe1d.html