Очистить таблицу базы данных

#c# #sql

#c# #sql

Вопрос:

Я использую следующий код для очистки таблицы базы данных:

 public void ClearAll()
{
    SqlCommand info = new SqlCommand();
    info.Connection = con;
    info.CommandType = CommandType.Text;
    info.CommandText = "edit_.Clear()";
}
  

Почему это не работает?

Комментарии:

1. Что edit_.Clear()"; означает?

2. КАКАЯ база данных и какая версия?? SQL — это просто язык структурированных запросов — язык, используемый многими системами баз данных — SQL НЕ является продуктом базы данных … подобные вещи очень часто зависят от поставщика , поэтому нам действительно нужно знать, какую систему баз данных вы используете….

Ответ №1:

С помощью команды sql вы обычно передаете инструкцию TSQL для выполнения. Попробуйте что-то вроде,

 SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["con"]); 
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "DELETE FROM Edit_ ";
cmd.Connection = con; 
con.Open(); 
cmd.ExecuteNonQuery(); 
con.Close();
  

Комментарии:

1. убедитесь, что вы установили для своего SqlConnection любую строку подключения, и убедитесь, что имя таблицы — Edit_ и что любые настройки подключения, которые вы используете, имеют разрешение на чтение и запись.

Ответ №2:

Вам нужно выполнить команду, поэтому info.Выполнить() или info.ExecuteNonQuery().

Ответ №3:

Попробуйте info.CommandText='DELETE FROM edit_';

Атрибут CommandText — это операторы TSQL, которые выполняются.

Вам также понадобится info.ExecuteNonQuery();

Комментарии:

1. Нет, нет «удалить из t», «усечь таблицу»

2. public void ClearAll ( ) { SqlCommand info = new SqlCommand ( ); info . Подключение = con; информация . CommandType = CommandType . Текст; информация . CommandText = «УДАЛИТЬ * ИЗ edit_»; информация . ExecuteNonQuery (); } не сработало:(

3. @suffix: попробуйте с info.CommandText = "DELETE FROM edit_" помощью . Нет * символа звезды.

Ответ №4:

1) Решите, использовать ли оператор TRUNCATE или DELETE

Используйте TRUNCATE для сброса таблицы со всеми ее записями и индексами:

 using (SqlCommand command = connection.CreateCommand())
{
    command.CommandType = CommandType.Text;
    command.CommandText = "TRUNCATE TABLE [dbo].[Edit_]";
    command.ExecuteNonQuery();
}
  

Используйте DELETE для удаления всех записей, но не сбрасывайте столбцы идентификации / автоматического увеличения

 using (SqlCommand command = connection.CreateCommand())
{
    command.CommandType = CommandType.Text;
    command.CommandText = "DELETE FROM [dbo].[Edit_]";
    command.ExecuteNonQuery();
}
  

Обратите внимание, что в примерах есть еще одна строка. В приведенном вами примере оператор SQL никогда не выполняется, пока вы не вызовете один из методов executeXXX(), таких как ExecuteNonQuery() .

2) Убедитесь, что вы используете правильный объект (вы уверены, что он вызван edit_ ?). Я рекомендую поместить схему перед именем таблицы, как в предыдущих примерах.

3) Убедитесь, что вы используете правильную строку подключения. Возможно, в производственной среде все работало нормально 😉

Комментарии:

1. Какую ошибку вы получаете? Используйте что-то вроде SQL Profiler, чтобы проверить, действительно ли выполняется оператор SQL, и предоставить нам более подробную информацию…

2. Я не получаю никаких ошибок, но я могу выполнить поиск в этой таблице, удалить из этой таблицы и вставить, но не очистить: S

3. Если вы можете УДАЛИТЬ, вы также можете «очистить», что на самом деле не является существующим оператором, но эквивалентно DELETE без условия WHERE.