2016-05-12 6 views
1

Я недавно был новым на C# и следил за учебником по подключению к базе данных, соединение для просмотра или команда SELECT было в порядке, я сделал некоторую ревизию на основе тем форумов, чтобы сделать мой код лучше, но когда я был в INSERT для моего SQL Server, у меня есть некоторые проблемы. Я смог вставить данные, но когда я повторно запускаю программу, данные, которые я только что вставил ранее, не были в базе данных.C# не может вставлять данные в базу данных SQL Server

Вот мой код при вставке

string commandText = "INSERT INTO loginInfo (name, pass, role) VALUES(@name, @pass, @role)"; 

using (connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(commandText, connection); 
    command.CommandType = CommandType.Text; 

    command.Parameters.AddWithValue("@name", textBox1.Text); 
    command.Parameters.AddWithValue("@pass", textBox2.Text); 
    command.Parameters.AddWithValue("@role", textBox3.Text); 

    try 
    { 
     command.Connection.Open(); 
     command.ExecuteNonQuery(); 
    } 
    catch 
    { 
    } 
    finally 
    { 
     command.Connection.Close(); 
    } 
} 

Я пытаюсь создать простой CRUD, но не сохранять данные ... пожалуйста, помогите

+4

удалите пустой блок catch и проверьте исключение. он должен сказать вам, что не так – doerig

+0

Можете ли вы попытаться закрыть соединение после 'ExecuteNonQuery'? –

+0

+1 к @doerig. Никогда не оставляйте пустые уловы. Попробуйте пошаговую отладку и проверьте, где вы получаете исключение. Выполнить nonquery return 'int', который укажет вам статус вставки, вставлены ли данные или нет. –

ответ

5

Если вы используете пункт AttachDbFileName= в вашем вы могли бы стать жертвой известной проблемы: вы можете просто посмотреть на неправильную базу данных (файл) при проверке ваших данных.

При запуске приложения в Visual Studio, он будет копировать вокруг .mdf файла (из вашего App_Data каталога в выходном каталог - обычно .\bin\debug - где приложение работает) и скорее всего, ваши INSERT работает просто отлично - но вы просто смотрите на неправильный файл .mdf в конце!

Если вы хотите придерживаться такого подхода, то попытайтесь поместить контрольную точку на connection.Close() вызов - и затем проверить .mdf файл с SQL Server Mgmt Studio Express - Я почти уверен, что ваши данные есть.

Долгосрочное жизнеспособное решение, на мой взгляд было бы:

  1. Установка SQL Server Express (и вы уже сделали это в любом случае)

  2. установки SQL Server Management Studio Express

  3. создать базу данных в SSMS Экспресс, дать ему логическое имя (например YourDatabase)

  4. подключиться к нему с помощью своего логического базы данных (данный при создании на сервере) - и не вмешиваться в работу с файлами физической базы данных и пользовательскими экземплярами. В этом случае строка подключения будет что-то вроде:

    Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True 
    

    и все остальное точно же, как раньше ...

Смотрите также отличный пост в блоге Аарона Бертрана Bad habits to kick: using AttachDbFileName более справочная информация.

+0

благодарю, что это работает, я установил SSMS Express, и это сработало, и я использую базу данных, основанную на сервисах, я смог добавить его, щелкнув правой кнопкой мыши на проводнике и добавив сервисную базу данных – yok2xDuran