проблемы, повторяющиеся через общий список строк - PullRequest
1 голос
/ 28 января 2012

У меня есть следующий код в моей программе, где я нажимаю на базу данных SQLCe, чтобы добавить результаты в список.Эта часть работает, но вместо выхода из функции QueryDB она переходит к оператору else и снова запускает функцию, которая возвращает нулевое значение.Я разработал его таким образом, потому что я хотел проверить, что база данных открыта, прежде чем я попытаюсь выполнить инструкцию SQL, и, если она не открыта, вызовите метод, чтобы открыть его и снова запустить функцию.*

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

    Private Sub cmbInvestmentStrategy_DropDown(sender As System.Object, e As System.EventArgs) Handles cmbInvestmentStrategy.DropDown

    Dim strat As New clsInvestmentStrategies()
    Dim invStrat As New List(Of String)

    invStrat = strat.getInvestmentStrategies() 'String cannot be converted to List(pf String)
    cmbInvestmentStrategy.Items.Add(invStrat) 'Error    3   Value of type 'System.Collections.Generic.List(Of String)' _
    'cannot be converted to '1-dimensional array of Object'.    

    End Sub

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

Спасибо!

1 Ответ

1 голос
/ 28 января 2012

Ваш метод QueryDB имеет большой недостаток. Если база данных недоступна (проблемы с подключением, база данных отключена или неверная строка подключения), будет бесконечный цикл. Ваш метод БД запроса должен просто запросить базу данных. Вы можете заключить его в другой метод, отвечающий за подключение к базе данных, но не хотите бесконечно повторять попытку подключения к базе данных.

Что касается вашего второго метода:

invStrat = strat.getInvestmentStrategies() 'String cannot be converted to List(Of String)

Ошибка здесь совершенно ясна. getInvestementStrategies возвращает одну строку и не может быть преобразован в список. Он должен возвращать List (Of String) или хотя бы некоторую коллекцию строк, я полагаю?

cmbInvestmentStrategy.Items.Add(invStrat) 'Error    3   Value of type 'System.Collections.Generic.List(Of String)' _
'cannot be converted to '1-dimensional array of Object'.

Items.Add добавит один элемент в комбинированный список. Вы должны перебрать значения invStrat и вызвать Add для каждого элемента. В качестве альтернативы вы можете использовать метод AddRange , но этот метод ожидает массив, а не список.

...