RKeyy Sii Ответов: 1

Как поместить предложение SQL query WHERE с целочисленным значением в VB.NET? Отладка службы окон?


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

В среде SQL Server Management Studio у меня есть запрос, который получает информацию об активном пользователе.

SELECT DISTINCT UserID FROM tblUserInfo WHERE IsActive = '1'


Моя проблема в том, что я не знаю, как поместить предложение where с целочисленным значением VB.Net

Public Shared Function FnGetUserID() As List(Of String)
        Dim lstUserID As New List(Of String)

        Dim cmd As New SqlCommand()
        Try
            cmd.Connection = DBConn.getConn()
            cmd.CommandType = CommandType.Text
            cmd.Connection.Open()

            Dim sql As String = ""
            sql += " SELECT DISTINCT UserID FROM tblUserInfo"

            cmd.CommandText = sql

            Dim sqlRdr As SqlDataReader = cmd.ExecuteReader
            While sqlRdr.Read
                lstUserID.Add(sqlRdr.Item("UserID").ToString)
            End While

            cmd.Connection.Close()
            cmd.Dispose()
        Catch ex As Exception
            cmd.Dispose()
            'lstSite = Nothing
        End Try

        Return lstUserID
    End Function


Надеюсь, вы сможете мне в этом помочь.

Кроме того, я делаю службу окон проекта, и я также новичок в этом, поэтому я думаю, что когда я хочу протестировать свой проект, я также просто нажимаю кнопку начать отладку в VB studio, и Служба окон будет работать и отлаживаться, но когда я нажимаю на нее, появляется всплывающее окно с надписью "сбой запуска службы Windows" и "не удается запустить службу из командной строки или отладчика". Сначала необходимо установить службу Windows (с помощью installutil.exe), а затем запустился с помощью ServerExplorer, административного инструмента Windows Services или команды NET START."

Что это значит? И правильно ли я делаю отладку своего оконного сервиса?

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

Ах, я пробовал этот код
sql += " SELECT DISTINCT UserID FROM tblUserInfo WHERE IsActive = '" & 1 & "' "

Ну, я действительно понятия не имею, как я мог бы это сделать.

[no name]

Вы используете параметризованный запрос.

RKeyy Sii

вот так?

Dim sql As String = ""
sql + = " SELECT DISTINCT UserID FROM tblUserInfo WHERE IsActive = @IsActive"

УМК.CommandText = sql

параметр.ParameterName = " @IsActive"
параметр.Значение = " 1"
УМК.Параметры.Добавить(параметр)

[no name]

О, и "что это значит?" оно означает именно то, что говорит. Службы находятся под контролем диспетчера управления службами и не могут быть запущены из командной строки, как обычный exe-файл.
"И правильно ли я делаю отладку своего оконного сервиса", очевидно, нет. Вы можете прикрепиться к своему процессу обслуживания или то, что я делаю, - это пишу код, который запускает службу в режиме "отладки", который не зависит от SCM, так что он может быть отлажен нормально.

1 Ответов

Рейтинг:
8

gregorio89

вы можете написать свой код таким образом

dim sql as string= " SELECT DISTINCT UserID FROM tblUserInfo WHERE IsActive = 1" 

this beacause your value is an integer and sql doesn't want ' for integer.

for debug your windows service you can use this tutorial, although you should use a windows application for testing your code (you can change a little of your code in debug mode).

<a href="https://www.youtube.com/watch?v=pfF-GNK5ygE">How to Debug Windows Service Source Code in Microsoft Visual Studio - YouTube</a>[<a href="https://www.youtube.com/watch?v=pfF-GNK5ygE" target="_blank" title="New Window">^</a>]


I hope it was useful