比如一张表的列是Name,Age,Num我用SqlDaraReader类的read方法逐行读一张表,读到某一行,要删除这行,怎么写SQL语句?

解决方案 »

  1.   

    既然读取到了,就可以这样
    SqlCommand delCmd=new SqlCommand("delete from table where Name='"+reader.getString(0)+"'",sqlConn);
    delCmd.ExcuteNonQuery();
      

  2.   

    比如读出来的是ID

    string sql="delete tab where id=你的ID";
    执行如果你想读的时候就删了,那不行,必须另外操作,read只是读
      

  3.   

    要是在read循环中要删除,需要重新创建连接(建新的connection),不能在read的连接中操作不过我不知道楼主为什么会有这样的应用,你要是知道条件的话不是可以直接删除吗
      

  4.   

    那你直接根据条件delete不就得了,为什么还要去读下,是不是你获取的信息数据需要转化才能使用还是怎么的,你举个例子看看
      

  5.   


    with emp_cte as
    (
    select *,Row_Number() over(partition by Name order by Name) as emp_ID from 表名
    )
    delect from emp_cte where emp_ID>1
      

  6.   

    我上面的列子实用与SQL 2005删除数据库中表中重复的数据!
      

  7.   


    while (MyReader.Read())
    {
       //把读出的比如ID做为参数 比如
       checkdata(Convert.Toint32(MyReader["id"].ToString()));
    }public void checkdata(int id)
    {
         SqlConnection MSSQLConn = new SqlConnection(xxxxxx);
         MSSQLConn.Open();
         SqlCommand MSCmd = new SqlCommand(@"select count(id) from mytab where id=" + id,MSSQLConn);
         int e = Convert.ToInt32(MSCmd.ExecuteScalar());
         if(e>0)//说明重复
         {
              //删除这个ID的数据
         }
    }
      

  8.   

    DELETE 表名
    WHERE 条件
      

  9.   

    SqlDaraReader 的结果集只读的,并且不能断开数据库。
    你用SqlDaraReader类的read方法逐行读一张表 和你收到一条信息对比,如果一样,收集这条记录的ID放到一个集合类里,比如ArrayList里。 当读完后,把ArrayList里存的ID。再建立连接 做删除操作
      

  10.   

    说错了,修改下
    DELETE *
    FROM 表名
    WHERE 条件
      

  11.   

    按照你讲的例子是删除重复
    直接一个SQL语句就好了
    delete from mytab where ID in (select ID from mytab group by ID having count(ID)>1)按照这个你可举一反三,有的东西SQL语句自己可以处理
      

  12.   

     
       up  Ding
      

  13.   

    在DataReader中
    while(dr.Read())
    {
    if(dr["字段"]=你条件)
    {
    删除..........
    }
    }
    大概这么个 意思