SQL Server сообщает, что пользователь создан, но не отображается в пользовательских таблицах в VB.net

#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. ооо, теперь я понял. тьфу .. спасибо за большую большую информацию, сэр, и с учетом этого все в порядке, теперь у меня все работает. в дополнение к этому, ха-ха, я был достаточно глуп, чтобы не заметить, что в моем источнике данных отсутствовали некоторые, особенно путь на моем компьютере, где он находится … извините за то, что я новичок в этом. Я был очень просвещен тем, что вы сказали. Еще раз спасибо и больше возможностей!