使用条件删除多个行

本文关键字:删除 条件 | 更新日期: 2023-09-27 18:03:50

你好,试图根据条件删除表的几行,但是我需要一些帮助,基本上我想删除所有行,而条件为真,然后停止并保持其余部分不变。

编辑:关于评论我道歉,我相当新的编程,对不起,如果没有做正确的事情,我新的这个网站以及。

private void button1_Click(object sender, EventArgs e)
{
   string varsql2check = ""; 
   do{
        SqlConnection conn = new SqlConnection(@"Data Source=.'wintouch;Initial Catalog=bbl;User ID=sa;Password=Pa$$w0rd");
        conn.Open();
        string varsql = "DELETE FROM wgcdoccab WHERE 'tipodoc' ='FSS' and 'FP' "; //sql query
        SqlCommand cmd = new SqlCommand(varsql, conn);
        SqlDataReader dr = cmd.ExecuteReader();
     } while(varsql2check = "SELECT * from wgcdoccab where 'tipodoc' !='FSS' and !='FP'  and contribuinte !='999999990' and  datadoc != CONVERT(varchar(10),(dateadd(dd, -1, getdate())),120);");
        dr.Close();
        conn.Close();
 }

使用条件删除多个行

你需要做的是:

private void button1_Click(object sender, EventArgs e)
{
     bool check = true;
     do
     {
          string connectionString = @"Data Source=.'wintouch;Initial Catalog=bbl;User ID=sa;Password=Pa$$w0rd";
          string queryString = string.Empty;
          using (SqlConnection connection = new SqlConnection(connectionString))
          {
               connection.Open();
               queryString = "DELETE FROM wgcdoccab WHERE 'tipodoc' ='FSS' and 'FP' ";
               SqlCommand command = new SqlCommand(queryString, connection);
               command.Connection.Open();
               command.ExecuteNonQuery();
           }
           using (SqlConnection connection = new SqlConnection(connectionString))
           {
                connection.Open();
                queryString = "SELECT * from wgcdoccab where 'tipodoc' !='FSS' and !='FP'  and contribuinte !='999999990' and  datadoc != CONVERT(varchar(10),(dateadd(dd, -1, getdate())),120)";
                using (SqlCommand command = new SqlCommand(queryString, connection))
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        check = true;
                    }
                    else
                    {
                        check = false;
                    }
                }
           }          
      } 
      while (check);
}

一般来说,我编辑你的代码是:

  1. 增加using语句以释放已建立的连接中的资源

  2. 您应该使用从查询执行返回的类型。ExecuteNonQuery()将返回受影响的行数,在我们的示例中,我们对delete查询之后从select语句返回的行特别感兴趣。我们创建了一个读取器,并根据行数(在本例中,我们只对是否有行感兴趣)相应地进行分支。如果我们从选择中没有得到行(所有内容都被删除),我们只是继续,如果我们什么也没有得到(reader.HasRows返回false),我们重复删除查询并再次检查。