#sql-server #vb.net
#sql-server #vb.net
Вопрос:
После того, как параметры заработали, я застрял и задался вопросом об этом, кстати, я новичок, поэтому я действительно не знаю, что теперь делать.
Вот мой код. Он работает определенным образом, но информация о пользователе, которую я создал или пытаюсь вставить, похоже, не отображается в User
таблице, в нем говорится, что информация о пользователе была сохранена. Я думаю, что я бегал по кругу, заранее спасибо за помощь
Dim userType As String = ComboBox9.Text
Dim empNum As String = eeNum.Text
Dim pass As String = passWord.Text
Dim lastName As String = lName.Text
Dim firstName As String = FName.Text
Dim midInitials As String = midIni.Text
Dim nameEx As String = nameExt.Text
Dim pos As String = Position.Text
Dim nickN As String = nickName.Text
Dim contact As String = contNum.Text
Dim email As String = eM.Text
Dim residentAdd As String = resAdd.Text
Dim str As String = String.Empty
Using Conn As New SqlConnection
Conn.ConnectionString = "Data Source=(LocalDB)v11.0;AttachDbFilename=|DataDirectory|IASDIRMS.mdf;Integrated Security=True;ConnectRetryCount=3;ConnectRetryInterval=3"
str amp;= "INSERT INTO [User] ([EE Number], [Last Name], [First Name], [Middile Initials], [Name Extention], [Position], [Nickname], [Contact Number], "
str amp;= "[Email Address], [Residential Address], [Password], [User Type])"
str amp;= "VALUES (@empNum, @lastName, @firstName, @midInitials, @nameEx, @pos, @nickN, @contact, @email, @residentAdd, @pass, @userType)"
Using cmd As New SqlCommand(str, Conn)
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
cmd.Parameters.AddWithValue("@userType", userType)
cmd.Parameters.AddWithValue("@empNum", empNum)
cmd.Parameters.AddWithValue("@pass", pass)
cmd.Parameters.AddWithValue("@lastName", lastName)
cmd.Parameters.AddWithValue("@firstName", firstName)
cmd.Parameters.AddWithValue("@midInitials", midInitials)
cmd.Parameters.AddWithValue("@nameEx", nameEx)
cmd.Parameters.AddWithValue("@pos", pos)
cmd.Parameters.AddWithValue("@nickN", nickN)
cmd.Parameters.AddWithValue("@contact", contact)
cmd.Parameters.AddWithValue("@email", email)
cmd.Parameters.AddWithValue("@residentAdd", residentAdd)
Try
If (cmd.ExecuteNonQuery().Equals(1)) Then
MsgBox(" User Successfully Created !! ")
eeNum.Clear()
passWord.Clear()
Else
MsgBox(" Error Creating User !! ", MsgBoxStyle.Critical)
eeNum.Clear()
passWord.Clear()
End If
cmd.Parameters.Clear()
Catch ex As Exception
MsgBox(" Error on Connecting to the Database ! ", MsgBoxStyle.Critical)
End Try
End Using
Conn.Close()
End Using
Комментарии:
1. Скорее всего, данные находятся там, где они должны быть, но вы просто не ищете их должным образом, что является очень распространенной проблемой. Как ИМЕННО вы определяете, что данных нет в таблице? Известно ли вам, что ваше приложение не использует базу данных в папке вашего проекта? Знаете ли вы, что используемая база данных перезаписывается каждый раз, когда вы создаете свой проект?
2. Кстати, ваше сообщение об ошибке вводит в заблуждение. Если возникает исключение, вы говорите «Ошибка при подключении к базе данных», но ваш
Try
блок фактически не запускается до тех пор, пока не будет открыто соединение. Это означает, что ваше приложение выйдет из строя, если на самом деле произойдет ошибка при подключении, и если вы поймаете это исключение, то причиной будет что-то иное, чем ошибка подключения.3. о том, «как именно я определяю, что данных нет в таблице».. после того, как я заполняю текстовые поля и нажимаю кнопку сохранения, кажется, что мои коды работают, но затем всякий раз, когда я проверяю таблицу пользователя, где она должна храниться .. ее там нет. и нет, я не совсем уверен и почти не знаю, что мое приложение не использует базу данных в папке моего проекта. кстати, я использую VS 2012. извините, я просто новичок, и я изучаю только учебные пособия в Интернете
4. кроме того, перед запуском проекта мой database.mdf все еще подключен, но всякий раз, когда я начинаю запускать проект, я замечаю, что индикатор меняется с подключенного на отключенный, а также не появляется никаких ошибок … вздох * я действительно в растерянности..
Ответ №1:
Почти наверняка вы просто ищете не в той базе данных. Вы можете прочитать мнение Microsoft об управлении локальными файлами данных здесь .
Подводя итог, когда вы добавляете файл данных в свой проект, он добавляется в папку проекта вместе со всеми другими исходными файлами. Предполагается, что он должен оставаться чистым, готовым к развертыванию. Здесь вы вносите изменения в схему и добавляете только данные по умолчанию, например, списки ссылок.
Когда вы создаете свой проект, этот файл исходных данных копируется в выходную папку вместе с вашим EXE. Когда вы запускаете свой проект, именно к этой копии в папке вывода отладки подключается ваше приложение. Если вы добавляете данные во время выполнения, вы добавляете их в эту копию. Если вы проверяете базу данных в VS, вы проверяете исходный файл. Вот почему вы не видите данные в VS.
По умолчанию исходный файл копируется в выходную папку при каждой сборке, перезаписывая любой существующий файл. Это означает, что если вы добавите данные, остановите отладчик, внесете изменения в код, а затем снова запустите проект, ваши данные исчезнут, потому что файл, в который они были добавлены, был перезаписан. Вы можете предотвратить это, выбрав файл в обозревателе решений и установив значение Copy to Output Directory
Copy if Newer
. Таким образом, ваш рабочий файл будет перезаписан только в том случае, если вы внесете изменения в исходный файл, например, при обновлении схемы.
Короче говоря, не ожидайте увидеть тестовые данные через VS и не ожидайте сохранять тестовые данные между запусками по умолчанию.
Комментарии:
1. ооо, теперь я понял. тьфу .. спасибо за большую большую информацию, сэр, и с учетом этого все в порядке, теперь у меня все работает. в дополнение к этому, ха-ха, я был достаточно глуп, чтобы не заметить, что в моем источнике данных отсутствовали некоторые, особенно путь на моем компьютере, где он находится … извините за то, что я новичок в этом. Я был очень просвещен тем, что вы сказали. Еще раз спасибо и больше возможностей!