ADO.Net - Почему не происходит вставка? - PullRequest
3 голосов
/ 11 сентября 2010

Я просмотрел страницы MSDN, чтобы изучить ADO.Net с помощью команд.Я могу читать, используя приведенный там пример кода.

Но когда я попытался использовать приведенный ниже код модификации, вставка не происходит.Я не эль, чтобы понять, почему.Может кто-нибудь подскажите, пожалуйста, что не так с этим кодом?

string connectionString = "A_VALID_CONNECTION_STRING";
string commandText = 
"INSERT INTO Contacts (FullName, Mobile) VALUES ('Pierce Brosnan', '1800-007')";

SqlConnection connection = new SqlConnection(connectionString);          

try
{
  connection.Open();
  SqlCommand command = new SqlCommand(commandText, connection);
  Console.WriteLine(command.ExecuteNonQuery());
  connection.Close();
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}

Редактировать

  • Нет исключения.

  • ExecuteNonQuery (), который должен возвращать no.затронутых строк возвращает 1.

  • Среда: Visual C # 2010 Express |SQL Server 2008 Express |32-разрядная версия Windows 7 Ultimate.

Обновление

  1. Ранее я использовал файл MDF, присутствующий в проекте.Я думаю, он автоматически подключался к экземпляру SQL-сервера при каждом запуске проекта.Это когда у меня возникла проблема.Строка подключения содержала некоторую информацию о присоединении файла базы данных.

  2. Я удалил SQL Server 2008 Express, который установил вместе с Visual C # 2010 Express.Также удалил файл MDF из проекта.

  3. Я отдельно скачал и установил SQL Server 2008 Express вместе с Management Studio Express.

  4. СозданНовая база данных в Management Studio.

  5. Использовал другой тип строки подключения для использования базы данных на сервере.

Теперь INSERT работает!

PS Полагаю, я должен был упомянуть, что у меня был сценарий с прикрепленным файлом базы данных.Очень жаль.

1 Ответ

3 голосов
/ 11 сентября 2010

Я подозреваю, что у вас был следующий сценарий:

  • Database.mdf файл присутствовал в проекте со структурой таблицы, созданной в нем
  • Ваша строка подключения выглядела примерно такэто Server=.\SQLExpress;AttachDbFilename=database.mdf;Database=dbname; Trusted_Connection=Yes;, т. е. загрузка базы данных в строку подключения.

Когда вы собрали / запустили проект, приложение было скомпилировано, а файл database.mdf скопирован вместе сэто ApplicationProjectFolder\bin\Debug, чтобы при запуске приложения присутствовал файл database.mdf.Это означает, что каждый раз, когда вы запускали свой проект, «пустой» файл database.mdf копировался из ApplicationProjectFolder\database.mdf в ApplicationProjectFolder\bin\Debug\database.mdf, следовательно, данные «исчезали».Кроме того, для файла database.mdf, вероятно, для его свойств в проекте установлен параметр «Копировать всегда».

Итак, «ВСТАВКА» работала, он просто «сбрасывался» при каждом запуске приложения.

...