2015-02-27 4 views
1

Я довольно смущен, почему данные, которые я добавил, не были сохранены в базе данных.Не удается сохранить данные в базе данных SQL Server

Пока моя программа работает, нет никаких проблем при обновлении данных, которые отображаются в DataGridView, но когда я закрываю программу, добавленные данные исчезают.

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

Это мой код:

Dim con As New SqlClient.SqlConnection 
Dim cmd As New SqlClient.SqlCommand 
Dim adaptor As New SqlClient.SqlDataAdapter 
Dim dataset As New DataSet 

con.ConnectionString = ("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True") 

con.Open() 

cmd.CommandText = "INSERT INTO [Table](FirstName,LastName,MI,Address,Email) VALUES(@FN,@LN,@MI,@AD,@EM)" 
cmd.Connection = con 

cmd.Parameters.Add("@FN", SqlDbType.VarChar).Value = TextBox1.Text 
cmd.Parameters.Add("@LN", SqlDbType.VarChar).Value = TextBox2.Text 
cmd.Parameters.Add("@MI", SqlDbType.VarChar).Value = TextBox3.Text 
cmd.Parameters.Add("@AD", SqlDbType.VarChar).Value = TextBox4.Text 
cmd.Parameters.Add("@EM", SqlDbType.VarChar).Value = TextBox5.Text 

cmd.ExecuteNonQuery() 

MsgBox("Added!") 
con.Close() 

Me.TableTableAdapter.Fill(Me.Database1DataSet.Table) 
+0

Вы пробовали трассировку профилировщика? –

ответ

1

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

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

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

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

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

Также смотрите в блоге Аарона Бертран в Bad Habits to Kick - using AttachDbFileName для получения дополнительной информации фона

Смежные вопросы