Member 11403304 Ответов: 1

К А ха па два три


убрали отсюда .....................

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

Dim strSql As String = GetCaseSQL("12345")

Member 11403304

Я так потерялась здесь. Поэтому то, что я пытаюсь сделать, прежде чем двигаться вперед, - это проверить, работает ли мой sql.
Когда, например, я тестирую вот так Dim strSql As String = GetCaseSQL ("5678")
результаты задаются @PartyID = 16482594
Я бы хотел, чтобы результат был установлен @PartyID = 5678.
Таким образом, результатом всегда должно быть то, что находится в Dim strSql As String = GetCaseDQL ("все, что находится здесь, должно быть возвращено как @PartyID")

1 Ответов

Рейтинг:
1

OriginalGriff

Удалите первые две строки:

"DECLARE @PartyID INT  " + vbCrLf + _
"SET @PartyID = 16482594 " + vbCrLf + _

Затем добавьте свой PartyID в качестве параметра в SqlCommand, когда вы его фактически используете:
Using con As New SqlConnection(strConnect)
    Dim myValue As Integer = 12345
	con.Open()
	Using cmd As New SqlCommand(strSQL, con)
        cmd.Parameters.AddWithValue("@PartyID", myValue)
		Using reader As SqlDataReader = cmd.ExecuteReader()
			While reader.Read()
				...
			End While
		End Using
	End Using
End Using
Не передавайте строковое значение вашему методу и не пытайтесь объединить его-этот способ слишком опасен: прочтите о SQL-инъекции, и вы поймете, что я имею в виду.


Member 11403304

Я так потерялась здесь. Поэтому то, что я пытаюсь сделать, прежде чем двигаться вперед, - это проверить, работает ли мой sql.
Когда, например, я тестирую вот так Dim strSql As String = GetCaseSQL ("5678")
результаты задаются @PartyID = 16482594
Я бы хотел, чтобы результат был установлен @PartyID = 5678.
Таким образом, результатом всегда должно быть то, что находится в Dim strSql As String = GetCaseDQL ("все, что находится здесь, должно быть возвращено как @PartyID")

OriginalGriff

Проблема в том, что способ, которым вы пытаетесь это сделать, опасен - он включает в себя конкатенацию строк, а это означает, что любой, кто может ввести эту строку, может вводить команды непосредственно на ваш SQL - сервер - и если это веб-сайт, то есть из любой точки мира, - это называется SQL-инъекцией, и его полностью следует избегать: google "bobby tables" и have a read.
Код, который я вам показал, показывает, как это сделать безопасно - вы предоставляете параметр, который SQL-команда вызывает @PartyID и который вы устанавливаете безопасным способом, без конкатенации строк.