删除表中的所有行

时间:2014-05-05 08:59:39

标签: c# for-loop data-binding delete-row

我试图用for循环删除表中的所有行但我不能这样做。 我使用reportBindingSource.count计算表中的行,但是我找不到删除整行FROM数据库(id,nameofcase,price)的方法。

  private void button1_Click(object sender, EventArgs e)
        {
            //delete all lines from the table

            count = reportBindingSource.Count;
            MessageBox.Show(count.ToString());

            for (int x = 0; x < count; x++) 
            {

                try
                {

                    //delete

                }
                catch(Exception ex)
                {
                    MessageBox.Show("not deleted");
                }

                MessageBox.Show(x.ToString());
            }
            this.Close();

        }

任何人都可以帮助我?

更新1

 try
                {

                    using(SqlConnection cnn = new SqlConnection("server=kosh-pc;User Id=root;Persist Security Info=True;database=lawyersprice"))
                    using(SqlCommand cmd = new SqlCommand("TRUNCATE TABLE report", cnn))
                     {
                         cnn.Open();
                         cmd.ExecuteNonQuery();
                     }

                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

我根据答案尝试这个但是没有连接,是的,我安装了.net

1 个答案:

答案 0 :(得分:4)

要从BindingSource中删除所有元素,您只需调用

即可
 reportBindingSource.Clear();

并且无需遍历单个元素

如果要从数据库表中删除所有行,则需要准备并执行适合您的数据库类型的Sql命令。

MySql的示例 - 需要MySql NET Connector以及对MySql.Data.dll的适当引用

(警告这会从数据库中删除行而没有任何异常)

 using(MySqlConnection cnn = new MySqlConnection(....connectionstring..))
 using(MySqlCommand cmd = new MySqlCommand("TRUNCATE TABLE yourTableName", cnn))
 {
     cnn.Open();
     cmd.ExecuteNonQuery();
 }

相反,如果您有条件,那么您需要

(这只删除数据库中满足条件的行)

 using(MySqlConnection cnn = new MySqlConnection(....connectionstring..))
 using(MySqlCommand cmd = new MySqlCommand("DELETE FROM yourTableName WHERE ... your condition...", cnn))
 {
     cnn.Open();
     cmd.ExecuteNonQuery();
 }