首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 又出问题了 , 哎 万事开头难啊 !!!各位救命了!! [已结贴,结贴人:feige2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-19 23:37:43 楼主
    “/9”应用程序中的服务器错误。
    --------------------------------------------------------------------------------

    对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.InvalidOperationException: 对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。

    源错误:


    行 62: SqlCommandBuilder scb=new SqlCommandBuilder (sda);
    行 63:
    行 64: sda.Update (mydt);
    行 65:   con.Close ();
    行 66: Show();


    源文件: c:\inetpub\wwwroot\9\webform1.aspx.cs    行: 64

    堆栈跟踪:


    [InvalidOperationException: 对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。]
      System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
      System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
      _9.WebForm1.deleting(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\9\webform1.aspx.cs:64
      System.Web.UI.WebControls.DataGrid.OnDeleteCommand(DataGridCommandEventArgs e)
      System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
      System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
      System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
      System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
      System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
      System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
      System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
      System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
      System.Web.UI.Page.ProcessRequestMain()




    --------------------------------------------------------------------------------
    版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573


    以上是我用  dataset 删除数据库中的信息的一个程序。 具体的删除过程如下


    private void deleting(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {

    con.Open ();
    SqlDataAdapter sda=new SqlDataAdapter ("select * from information ",con);
    DataSet ds=new DataSet ();
    sda.Fill (ds,"information");
    con.Close ();
    DataTable  mydt=ds.Tables ["information"];
    mydt.PrimaryKey =new DataColumn []{mydt.Columns ["ID"]};
    DataRow  mydr=mydt.Rows .Find (ID);
    mydr.Delete ();
    SqlCommandBuilder scb=new SqlCommandBuilder (sda);

    sda.Update (mydt);
            con.Close ();
        我感觉是这一快出的问题, 可是我不知道怎么解决了 ???????????????
    Show();  //这是一个 重新从数据库中用dataset方法读取信息的函数具体的内容如下:

    }
                private void Show()
    {
     
    SqlConnection con=new SqlConnection ("server=(local);database=city;uid=wo;pwd=110");
    con.Open ();
    SqlDataAdapter sda=new SqlDataAdapter ("select * from information ",con);
    DataSet ds=new DataSet ();
    sda.Fill (ds,"information");
    con.Close ();
    this.DataGrid1 .DataSource =ds.Tables ["information"];
    this.DataGrid1 .DataBind ();
    }

                该怎么解决呢 ,  今天你教会了我  下一个这样的我就不用你们交了,我就可以替你们了 呵呵
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-19 23:51:271楼 得分:15
    在page.load()中加入
    if(!IsPostBack)
    {
    show();
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-19 23:58:592楼 得分:20
    对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。
    ==
    数据库的相应的表是否创建了主键,SqlCommandBuilder创建的更新和删除语句是基于主键列进行的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 03:51:153楼 得分:5
    引用 2 楼 amandag 的回复:
    对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。
    ==
    数据库的相应的表是否创建了主键,SqlCommandBuilder创建的更新和删除语句是基于主键列进行的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 04:12:484楼 得分:15
    启用删除。。需要数据库中有主键的。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 09:16:585楼 得分:5
    学习~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 09:20:496楼 得分:25
    引用 2 楼 amandag 的回复:
    对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。
    ==
    数据库的相应的表是否创建了主键,SqlCommandBuilder创建的更新和删除语句是基于主键列进行的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 09:29:187楼 得分:5
    引用 5 楼 shadowjl 的回复:
    学习~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 10:36:358楼 得分:0
    最初 我是没有建 主键,可是  后来我又重新建了同样的数据库,然后将里面的ID设置成 主键,可是现在还是有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 10:40:389楼 得分:0
    大家看看  是不是我的程序,哪个地方出了问题  ,  帮忙修改一下,谢谢!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-20 10:56:5910楼 得分:10
    引用 1 楼 bradring 的回复:
    在page.load()中加入
    if(!IsPostBack)
    {
    show();
    }



    很清楚了:

    对于不返回任何键列信息的 SelectCommand 不支持 DeleteCommand 的动态 SQL 生成
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved