#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.