SqlDataAdapter sd = new SqlDataAdapter();
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "server=.;database=zlcaaron;uid=sa;pwd=sa.";        SqlCommand selectCmd = new SqlCommand();
        selectCmd.CommandText = "select * from BookData";
        selectCmd.Connection = conn;        SqlCommand delCmd = new SqlCommand();
        delCmd.CommandText = "delete BookData where BookID=@BookID";
        delCmd.Connection = conn;        delCmd.Parameters.Add("@BookID", SqlDbType.Int, 4, "BookID");       
        sd.SelectCommand = selectCmd;
        sd.DeleteCommand = delCmd;        DataSet data = new DataSet();
        sd.Fill(data, "BookData");        int nBookID = int.Parse(edit_BookID.Text);
        DataRow deletedr = null;
        foreach (DataRow dr in data.Tables["BookData"].Rows)
        {
            if (int.Parse(dr["BookID"].ToString()) == nBookID)
            {
                deletedr = dr;
                break;
            }
        }
        if (deletedr != null)
        {
            deletedr.Delete();            sd.Update(data, "BookData");
        }
       
        GridView1.DataSource = data.Tables["BookData"];
        GridView1.DataBind();

解决方案 »

  1.   

    密码是sa还是sa.?
    其他没看出来大问题
      

  2.   

    if (int.Parse(dr["BookID"].ToString()) == nBookID)
    {
    deletedr = dr;
    break;
    }break去掉 试试
      

  3.   

    我是个C#的新手,不过之前一直用PB开发工具的,在PB中对于数据库数据操作,执行SQL指令后,要COMMIT提交才能真正修改数据库数据,不知道是不是在C#中也会有COMMIT提交的操作,才能最终完成对数据库的数据修改
      

  4.   

    额。。断点调试一下,看看foreach (DataRow dr in data.Tables["BookData"].Rows)
    {
    if (int.Parse(dr["BookID"].ToString()) == nBookID)//看看有没有进入这一个if,如果没有进入,就是条件的问题了,不是程序的问题。
    {
    deletedr = dr;
    break;
    }
    }
      

  5.   

    SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "server=.;database=zlcaaron;uid=sa;pwd=sa.";
                conn.Open();
                string strSql = "select * from BookData";
                SqlDataAdapter sd = new SqlDataAdapter(strSql,conn);
                DataSet data = new DataSet();
                sd.Fill(data);            for (int i = 0; i < data.Tables[0].Rows.Count; i++)
                {
                    if (data.Tables[0].Rows[i]["BookID"].ToString() == edit_BookID.Text)
                    {
                        strSql = "delete BookData where BookID = " + int.Parse(edit_BookID.Text);
                        SqlCommand sd = new SqlCommand(strSql,conn);
                        sd.ExecuteNonQuery();
                    }
                }
    根据你提供的代码写的删除 ,你试下。
      

  6.   

    我说哥们,delete 语法应该是delete from 表名 where条件吧你可以用response.write()一下你的删除语句,然后复制到 SQL SERVER里执行下,看看结果
      

  7.   

    C# 不用commit 这个貌似是提交事务的概念吧。有自己执行SQL语句的方法 比如SqlCommand的ExecuteNonQuery()。
      

  8.   

    delete 表名 where 条件
    朋友可以自己开个SQL数据库试试!一样可以的
      

  9.   

    delete form tb_Name where ...
      

  10.   

    你的这个程序有问题,就是for语句里的sd定义,不过我吧他改了个参数就可以执行了,但是还是不能删除数据项,我在想会不会是我的数据库问题啊?各位说呢?我是菜鸟。我刚学习c#编程的
      

  11.   

    楼主,你那个delete 必须加 from
      

  12.   


    拜托你们能自己动手做做么 说了 不加FROM 也可以的 你们怎么就不动手自己做下呢 非要局限在思想当中
      

  13.   

    delCmd.CommandText = "delete BookData where BookID=@BookID"; 
    =>
    delCmd.CommandText = "DELETE FROM BookData WHERE BookID=@BookID";建议关键字都大写,那样更加的清楚些
      

  14.   

    还有。我的from加上去了。还是不行啊?
      

  15.   

     SqlDataAdapter sd = new SqlDataAdapter();
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "server=.;database=zlcaaron;uid=sa;pwd=sa.";        SqlCommand selectCmd = new SqlCommand();
            selectCmd.CommandText = "select * from BookData";
            selectCmd.Connection = conn;        SqlCommand delCmd = new SqlCommand();
            delCmd.CommandText = "delete from BookData where BookID=@BookID";
            delCmd.Connection = conn;        delCmd.Parameters.Add("@BookID", SqlDbType.Int, 8, "BookID");
            sd.SelectCommand = selectCmd;
            sd.DeleteCommand = delCmd;        DataSet data = new DataSet();
            sd.Fill(data, "BookData");        int nBookID = int.Parse(edit_BookID.Text);
            DataRow editdr = null;
            foreach (DataRow dr in data.Tables["BookData"].Rows)
            {
                if (int.Parse(dr["BookID"].ToString()) == nBookID)
                {
                    editdr = dr;
                    break;
                }
            }
            if (editdr != null)
            {
                editdr.Delete();            sd.Update(data, "BookData");
            }        GridView1.DataSource = data.Tables["BookData"];
            GridView1.DataBind();
      

  16.   

    conn.ConnectionString = "server=.;database=zlcaaron;uid=sa;pwd=sa.";
    加一句:conn.open();
    再在最后加一句:conn.close();
      

  17.   

    这个ConnectionString里面的server=.改成localhost
      

  18.   

    不好意思,确实不是SQL语句的问题,哎代码看着眼花,最好最快的方法还是加个断点,在要执行的方法行最前面点一下就行了,是个红色的圆点..
      

  19.   

    <asp:Button ID="Button4" runat="server" Text="删除数据" /><br />
            编号:<asp:TextBox ID="edit_BookID" runat="server"></asp:TextBox>