Member 12952690 Ответов: 2

Правильный синтаксис для чтения поля в таблице с помощью SQL-чтения


Я понятия не имею, почему существует так мало примеров кода, показывающих, как считывать значение из поля в таблице с помощью кода ASPX.VB. Приведенный ниже пример не работает, но я показываю вам эту идею. Я понимаю, что если бы он работал, то читал бы только последнюю запись в таблице. Я просто пытаюсь получить правильный синтаксис, и теперь, после недели исследований и покупки 2 книг, я не нашел ответа.

Это неправильный синтаксис "
myreader("UserName").value
что я просто гадал, как заставить его работать.

Любая помощь будет очень признательна.

Что я уже пробовал:

Protected Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click

       Dim str As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\inetpub\wwwroot\RedRock\App_Data\Database.mdf;Integrated Security=True"
       Dim con As New Data.SqlClient.SqlConnection(str)
       Dim strAgentsName As String

       con.Open()
           Dim sql As String = "SELECT * FROM tblAgents;"
           Dim cmd As New SqlCommand(sql, con)
           Dim myreader As SqlDataReader = cmd.ExecuteReader()

       While myreader.Read()


           strAgentsName = myreader("UserName").value


       End While

   End Sub

NotPolitcallyCorrect

"не работает", вы должны объяснить, что, по вашему мнению, означает" не работает".
myreader ("имя пользователя").ToString() должен работать

Michael_Davies

Есть масса примеров, у Microsoft есть целые руководства в интернете.

Так же как и использование .Метод toString:

мой читатель.GetString(myreader.GetOrdinal ("Имя Пользователя"))

2 Ответов

Рейтинг:
2

Member 12952690

Наконец-то я нашел простое решение. Это решение не использует @Parameters в SQL-операторе, так как я все еще думаю об этом. Но это решение было тем, что я искал. Как передать данные из SQL-запроса в локальную переменную,которая может быть использована кодом программы. Пожалуйста, не стесняйтесь предлагать любые предложения о том, как это можно было бы еще больше упростить. Это та модель, которую я пытался разработать. Как вы видите,

getUserName = rs("UserName")
вот что мне было нужно. Как получить доступ к полю данных. Надеюсь, это поможет другим и спасибо Вам за помощь мне.

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles btnTest2.Click
        Dim getLoginID As String
        Dim getUserName As String


        'Testing the read methodology of the SQL database

        'Opening the SQL Connetion as "cn"
        Dim cn As System.Data.SqlClient.SqlConnection
        'setting rhe paramiters of "cn" connetion location and connection information such as SQL Login ID and Password
        cn = New System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\inetpub\wwwroot\RedRock\App_Data\Database.mdf;Integrated Security=True")
        cn.Open()

        'Definiing the SQL search paramitiers as a record set called "rs"

        Dim getUserID As New System.Data.SqlClient.SqlCommand("Select LoginID, UserName, Password from tblAgents where LoginID='bmart101'", cn)
        Dim rs As System.Data.SqlClient.SqlDataReader

        'Reads the record set.
        rs = getUserID.ExecuteReader(Data.CommandBehavior.CloseConnection)


        'Useds the information read from the record set to pass the data to local varables.
        If rs.HasRows() Then
            While rs.Read()
                getLoginID = rs("LoginID")
                getUserName = rs("UserName")

            End While

        End If
        'Passes the result back to the webpage as a label to see that it worked.
        Label1.Text = getUserName


    End Sub


Рейтинг:
1

Wendelius

В своем коде вы используете свойство Item класса SqlDataReader. Взгляните на документацию по адресу Класс sqldatareader.Свойство Элемента (Строка) (System. Data.SqlClient)[^] и вы заметите, что элемент возвращает a Класс Объекта (Система)[^].

Класс объекта опять же не содержит вызываемого свойства или функции value таким образом, код вызывает исключение.

В зависимости от данных taype вы можете например использовать Объект.Метод ToString (System)[^] чтобы показать значение. Если тип является чем-то иным, чем string, то вы можете использовать, например Оператор DirectCast (Visual Basic)[^] или введите конкретные функции Get, такие как Класс sqldatareader.Метод GetInt32 (Int32) (System. Data.SqlClient)[^]

Просто не забудьте проверить, действительно ли это значение существует, используя Класс sqldatareader.Метод IsDBNull (Int32) (System. Data.SqlClient)[^]

Рассмотрим следующий пример

Using connection1 As SqlClient.SqlConnection = New SqlClient.SqlConnection("connection string goes here")
   Using command1 As SqlClient.SqlCommand = New SqlClient.SqlCommand
      command1.Connection = connection1
      command1.CommandText = "select name from sysobjects"
      connection1.Open()
      Using reader1 = command1.ExecuteReader
         While reader1.Read()
            If Not reader1.IsDBNull(0) Then
               Console.WriteLine(reader1("name").ToString())
            End If
         End While
     End Using
     connection1.Close()
   End Using
End Using


Member 12952690

У меня все еще есть много проблем с этим методом, а также с попыткой понять модель.

Теперь проблема заключается в том, что «reader1» не определен как объект. Достаточно ли сказать в коде, что «Использование» достаточно для его определения? Ошибка указывает, что для объекта должно существовать предложение As. Также мне пришлось удалить некоторые дополнительные ошибки, возникающие с SqlClient.SqlConnetion, как вы видите в моем коде ниже. Моя цель - разработать код многократного использования для всех основных операций взаимодействия с базой данных SQL. Прочтите данные, отредактируйте данные, удалите данные и используйте их. Проблема, с которой я столкнулся, заключается в использовании данных. Вместо того, чтобы писать в консоль, я хочу получить доступ к данным из таблицы в базе данных и передать эту информацию переменной, которую я затем могу использовать в коде. Надеюсь это получиться с тех пор. Ваша помощь очень ценится. Я также прочитал предложения по ссылкам выше и ценю такие советы, которые помогают мне учиться.

Member 12952690

- Забыл, вот что у меня теперь.
"Подключение к базе данных SQL вместе с информацией о местоположении базы данных и доступе"
Используя connection1 как sqlclient как.Объект Sqlconnection = Новый Sqlclient Как.Объект sqlconnection("источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=C: в папке\inetpub\wwwroot в\как redrock\папку App_Data\базе.МДФ;Комплексная безопасность=истина")


Использование command1 в качестве Data.SqlClient. SqlCommand = New Data.SqlClient.SqlCommand
КОМАНДА1.Соединение = соединение1
command1. CommandText = " выберите имя пользователя из tblAgents"
connection1.Открыть()
Использование reader1 = command1. ExecuteReader
В то время как reader1. Read()
Если не читатель1.IsDBNull (0) Тогда
'Метка1.Текст(пользователь reader1("логин").Метод toString())
Конец, Если
Конец Пока
Конец Использования
connection1.Закрывать()
Конец Использования
Конец Использования