Member 14331592 Ответов: 1

Оператор '&' не определен для строки


Dim conns As New SqlConnection("Data Source=DESKTOP-IJRIL1\SQLEXPRESS;Initial Catalog=Sample_AES;Integrated Security=True")
Dim SubAD As new SqlDataAdapter("Select SubID, Subject From Subjects Where SubID = " & cbSubID.SelectedValue & "", conns)
Dim subtable As New DataTable

SubAD.Fill(subtable)

txtSubject.Text = subtable(0)(1)


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

Where SubID = " & cbSubID.SelectedItem.ToString & "", conns)


здесь все еще есть ошибка. любое предложение

Mehdi Gholam

Пробовать +

Richard Deeming

Dim SubAD As new SqlDataAdapter("Select SubID, Subject From Subjects Where SubID = @SubID", conns)
SubAD.SelectCommand.Parameters.AddWithValue("@SubID", cbSubID.SelectedValue)

Member 14331592

попробовал, но есть сообщение об ошибке о том, что "не существует сопоставления типа объекта System.Data.DataRowView с известным собственным типом управляемого поставщика."

Richard Deeming

Затем вам нужно будет извлечь соответствующее поле из выбранного элемента:

Dim SubAD As new SqlDataAdapter("Select SubID, Subject From Subjects Where SubID = @SubID", conns)
Dim row As DataRowView = DirectCast(cbSubID.SelectedValue, DataRowView)
SubAD.SelectCommand.Parameters.AddWithValue("@SubID", row("YOUR_FIELD_NAME_HERE"))

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Во первых тебе не нужен финал & "" мусор. Я все время вижу это у ньюба, и это совершенно бесполезно.

В проблемной строке вы начинаете строковый литерал с", а затем пытаетесь добавить к нему значение переменной, предварительно не закрывая литерал.

Далее, Не используйте конкатенацию строк для построения SQL-запроса. Всегда используйте параметризованные запросы. Видеть Параметры DataAdapter | Microsoft Docs[^] для того, как это сделать.

Тогда иди и посмотри Google: атака sql-инъекций[^] для чего.