数据库用的Access,用了三层和抽象工厂。
问题:
1、在 …Web/Manage/Components/CaseList.aspx 做 修改
update是成功了,但影响行数老是0。我用了gridView自已的修改和自己写方法修改都是这样。
AccessDAL项目里的AccessDAL也没有错,用的是传参方式。对应Access数据库表是Case表。
最奇怪的是同在一个目录下的ProductList.aspx更新又没有问题,用的DBHelper是一样的。
搞了几天搞不了,只能发上来请教会的人了。2、选中…Web/Manage/Components/ProductList.aspx 启动VS2008运行,连点刷新会报错。
有两个地方,取分页的总页数时会报错,把他调成 private static int TotalPage = ProductManager.GetProCount(pageSize)
静态这时就没事。然而取分页集合时又报错。 点慢没事,拼命点就报错。
本人用asp.net一个多月,这两个问题目前水平实在解决不了,请教会朋友和高手们了,先谢谢!
源码在我的E盘里。TempletEE.rar的压缩文件。
下载地址:http://Landry.qupan.com/4890504.html

解决方案 »

  1.   

    1  单步调试  看执行的sql语句是否正确2  可能是效率不高 连点刷新时GetProCount死锁了  像这些总页数这些可以写成静态的 
      

  2.   

    1:网速不快,下了半天,看了楼主的源码,没有看到CaseList.aspx里面有更新的操作代码。代码上传不是最新版???
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='#' Text="编辑"></asp:HyperLink>2:运行…Web/Manage/Components/ProductList.aspx,没有报错,只是提示重复提交。
      

  3.   

    回一楼,单步调试过了,SQL绝对正确。而且我改成了update [表名] set name = @参数 where id = @参数
    这么简单句都不不行。效率不高也许可能,我看别人的思路差不多也不会死锁。是不是要加多一个象PetShop项目那样的消息队列?
      

  4.   

    回2楼,我改过了,因为修改不了,我直接 NavigateUrl='#' ,你看AccessHelper里,原来的方法我都注释掉了。
      

  5.   

    用程序把你的SQL打印出来,再放到SQL SERVER里执行,
    看看是哪里的问题,慢慢找原因
      

  6.   

    回7楼,调试过了,SQL没有问题。连到MSSQL又能update,我实在搞不懂才发上网来的。
      

  7.   

    还是上传到下载里。贴出update方法看看
    操作的是实体类还是数据库,点击多次应该是反应速度问题导致出错
      

  8.   

    我上传到了CSDN的资源区。
    地址:http://download.csdn.net/source/1748792
      

  9.   

    Update方法:/// <summary>
            /// 更新一条数据
            /// </summary>
            //public int Update(Case caseTo)
            //{
            //    StringBuilder strSql = new StringBuilder();
            //    strSql.Append("update [Case] set ");        //    strSql.Append("tradeID=@tradeID,");
            //    strSql.Append("caseTypeID=@caseTypeID,");
            //    strSql.Append("caseName=@caseName,");
            //    strSql.Append("companyName=@companyName,");
            //    strSql.Append("desingner=@desingner,");
            //    strSql.Append("description=@description,");
            //    strSql.Append("isGood=@isGood,");
            //    strSql.Append("re=@re,");
            //    strSql.Append("createTime=@createTime");
            //    strSql.Append(" where caseID=@caseID");
            //    OleDbParameter[] parameters = {
            //            new OleDbParameter("@caseID", caseTo.CaseID),
            //            new OleDbParameter("@tradeID", caseTo.TradeID),
            //            new OleDbParameter("@caseTypeID", caseTo.CaseTypeID),
            //            new OleDbParameter("@caseName", caseTo.CaseName == null ? string.Empty:caseTo.CaseName),
            //            new OleDbParameter("@companyName", caseTo.CompanyName == null ? string.Empty:caseTo.CompanyName),
            //            new OleDbParameter("@desingner", caseTo.Desingner == null ? string.Empty:caseTo.Desingner),
            //            new OleDbParameter("@description", caseTo.Description == null ? string.Empty:caseTo.Description) ,
            //            new OleDbParameter("@isGood", caseTo.IsGood),
            //            new OleDbParameter("@re", caseTo.Re == null ? string.Empty:caseTo.Re),
            //            new OleDbParameter("@createTime", caseTo.CreateTime)};
            //    return AccessHelper.ExecNonQuery(strSql.ToString(), parameters);
            //}
            public int Update(Case caseTo)
            {
                string sql = "update [Case] set desingner=@desingner where caseID=@caseID"; 
                OleDbParameter[] parameters = {
    new OleDbParameter("@caseID", caseTo.CaseID),

    new OleDbParameter("@desingner", caseTo.Desingner)
    };
                return AccessHelper.ExecNonQuery(sql, parameters);
            }
      

  10.   

    原先的我注释掉了,下面那个这么简单的也Update不成功。
    请朋友们帮帮忙吧。
      

  11.   

    为什么 要那么麻烦?
    字符 直接+ 就好了
    怕用 内存 用 stringbuilder.Append()  函数string sql = "update [Case] set desingner='"+caseTo.Desingner+"' where caseID='"+"+caseTo.CaseID+"+"'"; 
      

  12.   

    用 net  的  ExecNonQuery(sql)
      

  13.   

    重了,,,string sql = "update [Case] set desingner='"+caseTo.Desingner+"' where caseID='"+caseTo.CaseID+"'";
      

  14.   

    回15、16、17楼,随便加个 ' 东西不是很容易出错和注入了,拼SQL是可以Update成功,如果实在解决不了的话我也只能用拼SQL的办法了。
      

  15.   

     //    OleDbParameter[] parameters = {
            //            new OleDbParameter("@caseID", caseTo.CaseID),
            //            new OleDbParameter("@tradeID", caseTo.TradeID),
            //            new OleDbParameter("@caseTypeID", caseTo.CaseTypeID),
            //            new OleDbParameter("@caseName", caseTo.CaseName == null ? string.Empty:caseTo.CaseName),
            //            new OleDbParameter("@companyName", caseTo.CompanyName == null ? string.Empty:caseTo.CompanyName),
            //            new OleDbParameter("@desingner", caseTo.Desingner == null ? string.Empty:caseTo.Desingner),
            //            new OleDbParameter("@description", caseTo.Description == null ? string.Empty:caseTo.Description) ,
            //            new OleDbParameter("@isGood", caseTo.IsGood),
            //            new OleDbParameter("@re", caseTo.Re == null ? string.Empty:caseTo.Re),
            //            new OleDbParameter("@createTime", caseTo.CreateTime)};在构造参数的地方,类似于caseTo.Description == null ? string.Empty:caseTo.Description
    这里,改成caseTo.Description == null ? "":caseTo.Description用""替换string.Empty
      

  16.   

    回19楼,不关 ""替换string.Empty 的事,都一样
      

  17.   

    朋友们,第二条问题我已解决了。
    还有一个Update不成功的原因。谢谢楼上回答的同志,分我会看着给的。
      

  18.   

    会不会是sql语句里面是case,parameter是它的实例
      

  19.   

    [case] 加了这个了。CSDN有朋友见过这样的问题吗?
      

  20.   

    up更新不成功,sql语句的问题
      

  21.   

    回25楼,SQL没有任何问题,长的在SQL查询正常运行。 下面这个通过主ID来update单字段也不行,不报错,就是返回影响0行。
    回26楼,没有报错,只是update没有更新到数据。
            public int Update(Case caseTo)
            {
                string sql = "update [Case] set desingner=@desingner where caseID=@caseID"; 
                OleDbParameter[] parameters = {
                        new OleDbParameter("@caseID", caseTo.CaseID),
                        
                        new OleDbParameter("@desingner", caseTo.Desingner)};
                return AccessHelper.ExecNonQuery(sql, parameters);
            }
      

  22.   

    access好像在参数sql上支持的不好,有些字段类型捣的鬼,无奈就改成sqlserver了!!
      

  23.   

    终于找到答案了。我的这个项目不是参数顺序问题
    (http://space.itpub.net/14601556/viewspace-528473),
    是百度里的http://zhidao.baidu.com/question/107906361.html这个问题。GOOGLE里搜 access oledbparameter 会有很多答案!谢谢回来的朋友们了,散分结贴。