Member 13554586 Ответов: 2

Как добавить listbox1. Пункт в VB.NET как оператор textbox1.text текст с использованием данных ms access ba


Если я хочу добавить все столбцы базы данных ms Access (имя) , содержащие значение textbox1.text использование оператора like. Добавьте в listbox1.item.add

пожалуйста предложите мне

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

Private sub Textbo1_Textchanged(Sender As object ,e As EventArgs) Handles.Textbox1.TextChanged


Dim qry as String
Dim i as integer
Dim count as Integer
Dim ds as Dataset
Dim cmd as Oledbcommandbuilder
Dim da as oledbDataAdapter
Dim con as new oledbconnection
Dim Dr as DataRow

Con.connectingstring=("provider=microsoft.jet.oledb.4.0;data source=Fdcoaching.mdb;oled: Database password=7739271843")
Con.open()

qry="select * from student where Name like '*"& textbox1.text & "*' "

da= New oledbDataAdapter (qry,con)

ds= new Dataset ()

da.fill(da,"student")

cmd=new Oledbcommandbuilder (da)

Count=da.tables("student "). Rows.Count
dr=da.tables("student"). NewRows ()
For i=0 to Count
 dr=da.tables(" student"). Rows (i)
Listbox1.item.Add(dr.item (1).To string ())

Next
End sub

Member 13554586

При запуске этого кода возникает синтаксическая ошибка

2 Ответов

Рейтинг:
1

Sandeep Mewara

Вместо того чтобы перебирать всю таблицу и затем динамически добавлять строки, вы можете просто определить источник данных и привязать его.

Нравится:

ds= new Dataset()
da.fill(ds,"student") 'this was also incorrect in your code

' Instead of row by row addition, just define datasource
ListBox1.DataSource = ds.Tables("student")
ListBox1.DisplayMember = "NameOfDisplayField"

Я также вижу, что при заполнении из dataAdapter вы не использовали dataset.
Попробуйте!


Member 13554586

У меня есть большое количество элементов в списке под названием listBox1. У меня также есть текстовое поле (textBox1) в верхней части. Я хочу иметь возможность вводить текст в текстовое поле, а список просматривает его элементы и находит те, которые содержат то, что я печатаю.

Например, предположим, что список содержит

"Кошка"

"Собака"

"Морковь"

и "брокколи"

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

Sandeep Mewara

Что называется функцией опережающего ввода/автозаполнение.

Смотрите: http://vbcity.com/blogs/xtab/archive/2012/09/22/windows-forms-combining-autocomplete-and-listbox-selection.aspx

Member 13554586

Сэр, мое имя поля столбца базы данных ms Access - "имя"
Предположим наименование подал магазине
1. Данные
2.Рахул
3.Манту
4.Мохан
Раджу ,очень, когда я введите в текстовое поле 1.текст 'U', а затем результаты отображаются в элемент управления ListBox, Рахул ,Манту,Раджу, который содержит текстовое поле 1.текста, такие как вяжутся ERP систем ГК
При вводе 'A' результаты отображаются ниже, что содержит 'A'
Пожалуйста сэр

Рейтинг:
0

OriginalGriff

Для начала, не делай этого так! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?

Во-вторых, ваша колонка называется Name - что является зарезервированным словом доступа: Список зарезервированных слов в Access - Office | Microsoft Docs[^]
Вы не должны использовать зарезервированные слова для столбцов, так как это сбивает с толку синтаксический анализатор строк SQL. Если вы должны, то каждый раз, когда вы используете их, вы должны избегать их:
SELECT * FROM Student WHERE [Name] LIKE ...


В-третьих, не используйте SELECT * FROM вообще - перечислите столбцы, которые вас действительно интересуют, в том порядке, в котором вы их хотите. Это более эффективно (потому что он не повторяет нежелательные данные, которые могут включать изображения) и делает ваш код более надежным, поскольку изменения в структуре БД не означают, что вы позже получите доступ к столбцам не по порядку.
Поскольку вы используете только один столбец - и получаете доступ к нему по индексу, - вы не должны извлекать больше этого столбца.