CrugerBrent Ответов: 2

Заполнение данных Combobox в vb из базы данных access


Привет,
Я новичок в vb, и мне нужно кое-что знать. Я сделал простую форму с помощью vb.net. Там я ввел combobox и подключил его к базе данных access. Но когда я запускаю программу, когда я нажимаю на раскрывающийся список, я не получаю информацию из подключенной базы данных. Может кто-нибудь сказать мне, что не так с моим кодом?
вот этот код
[код]
Система Импорта.Сведения
Общественного Класса Form1
Dim inc как целое число
Dim MaxRows Как Целое Число

Dim con как новый OleDb.OleDbConnection
Dim ds как новый набор данных
Дим да как oledb.Объект oledbdataadapter
Dim sql как строка

Частная суб методе form1_load(как byval отправителя как системы.Объект, бывал е как система.EventArgs) Обрабатывает MyBase.Load
против.Параметр connectionString = "поставщика = Майкрософт.туз.oledb для.12.0;Источник данных = ItemList.# то # "
против.Открыть()

sql = "SELECT * FROM Item_List"
да = новый oledb для.Объект oledbdataadapter(среда SQL, кон)

da.Fill(ds, "ItemList")
против.Закрывать()

MaxRows = ds.Tables("ItemList").Rows.Рассчитывать
Инк = -1

Конец Подводной Лодки


End Класса
[/код]

Моя версия vb-это vb 2005 express edition.

2 Ответов

Рейтинг:
2

Member 14880851

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

Для использования этой функции вам понадобится:

Дим larayOfSelectedValues() Как Строка = Ничего
Дим lclsFillTypeSecureUserComboBox как clsFillArrayOfSelectedValues
Dim lsqlCommand As String = "SELECT TypeUser" &
"От 10_10_TypeSecureUser" и усилитель;
"Заказ По Типу Пользователя"

Заявления для использования функции:

' ----  Load the Secure User Combo Box with the Secure User Names from Secure User Name Table
            lclsFillTypeSecureUserComboBox = New clsFillArrayOfSelectedValues
            If lclsFillTypeSecureUserComboBox.FillArrayOfSelectedValues(iclsOLEDBConnectionString:=mclsOLEDBConnectionString,
                                                                        istrSelectCommand:=lsqlCommand,
                                                                        iarayOfSelectedValues:=larayOfSelectedValues) = vbFalse Then
                Throw New Exception("An error occurred wil populating the Type user Combo Box")
            End If
            Me.cmboTypeUser.Items.AddRange(larayOfSelectedValues)


И наконец функция:

Imports System.Data
Imports System.Data.OleDb
Imports Project_Reporting.Project_ReportingDataSetTableAdapters

''' <summary>
''' Selects all the Secure Users from the Secure User table [10_00_SecureUser]
''' and fills the Secure User Combo Box [cmboSecureUser] with the Secure User
''' Names
''' 
''' </summary>
Public Class clsFillArrayOfSelectedValues
    Private mstrClsTitle As String = "clsFillArrayOfSelectedValues"

    '<PageBreak>
    ''' <summary>
    ''' Function Selects values from a Table in the Access Data base and fills and array with the
    ''' selected values [iarayOfSelectedValues] using the provided OLEDb connection string
    ''' [iclsOLEDBConnectionString] and provided SQL select command [istrSelectCommand].
    '''     *)  Returns True if successful
    '''     *)  Returns False if un-successful
    '''     
    ''' The Parameters:
    '''     *)  iclsOLEDBConnectionString   -   The Database Connection string that is
    '''                                         created by the caller as:
    '''                                         "Provider=Microsoft.ACE.OLEDB.12.0; " +
    '''                                         "Data Source=" + .pstrDataBase + 
    '''                                                      "Project_Reporting.accdb;" +
    '''                                         "Jet OLEDB:Database Password=" + mstrPassword + ";" +
    '''                                         "Persist Security Info=False;"
    '''     *)  istrSelectCommand           -   The SQL Select Statement that will select the values
    '''                                         to be inserted into the array of selected values
    '''                                         [iaraySelectedValue].
    '''     *)  iarayOfSelectedValues          -   An array of the values selected from
    '''                                         the Table that can be inserted into a
    '''                                         Combo Box by the caller using:
    '''                                         [Me.cmboUseName.Items.AddRange(iarayOfSelectedValues)]
    '''    
    ''' </summary>
    ''' <param name="iclsOLEDBConnectionString"></param>
    ''' <param name="istrSelectCommand"></param>
    ''' <param name="iarayOfSelectedValues"></param>
    ''' <returns></returns>
    Public Function FillArrayOfSelectedValues(ByVal iclsOLEDBConnectionString As clsOLEDBConnectionString,
                                              ByVal istrSelectCommand As String,
                                              ByRef iarayOfSelectedValues() As String) As Boolean

        ' ----  Local Data Base Classes 
        Dim lcmdOleDbCommand As New OleDbCommand
        Dim lrdrOleDbDataReader As OleDbDataReader = Nothing

        '<PageBreak>
        Try

            With lcmdOleDbCommand
                .Connection = iclsOLEDBConnectionString.pOleDbConnection
                .Connection.Open()
                .CommandType = CommandType.Text
                .CommandText = istrSelectCommand
            End With

            ReDim iarayOfSelectedValues(0)
            lrdrOleDbDataReader = lcmdOleDbCommand.ExecuteReader
            While lrdrOleDbDataReader.Read
                Debug.Print("lrdrOleDbDataReader.Item(0) [" & lrdrOleDbDataReader.Item(0) & "]")
                iarayOfSelectedValues(UBound(iarayOfSelectedValues)) = lrdrOleDbDataReader.Item(0)
                ReDim Preserve iarayOfSelectedValues(UBound(iarayOfSelectedValues) + 1)
            End While
            lrdrOleDbDataReader.Close()
            ReDim Preserve iarayOfSelectedValues(UBound(iarayOfSelectedValues) - 1)
            Return vbTrue

        Catch ex As Exception
            Throw New Exception(mstrClsTitle & ".FillArrayOfSelectedValues " &
                                "An error occurred while filling the " &
                                "Type Secure User Combo Box " & vbCrLf &
                                "Err.Number [" & Err.Number & "] " & vbCrLf &
                                "Err.Description [" & Err.Description & "]")
            Return False
        Finally
            lcmdOleDbCommand.Connection.Close()
            lcmdOleDbCommand = Nothing
            lrdrOleDbDataReader = Nothing
        End Try
    End Function

End Class


Dave Kreskowiak

Вопрос и ответ семь лет назад, с гораздо более простым фрагментом кода и объяснением.

Richard Deeming

Такие методы заставят пользователя написать код, который уязвим для SQL-инъекция[^].

И ты тоже ReDimИнг массива на каждой итерации, что ужасно неэффективно. Использовать List(Of T) вместо.

И вы смешиваете правильную структурированную обработку исключений со старым стилем VB6 Err объект, и отбрасывая детали любых исключений.

Рейтинг:
19

jenitshah

Попробовать это :

Imports System.Data.OleDb
Public Class homemain
    Dim cnn As New OleDbConnection(<connection string="">)
    Dim cmd As New OleDbCommand

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)handles Button1.Click
        
     cnn.Open()
     cmd.Connection=cnn
     cmd.CommandText="select empname from employee"
     
     Dim dr As OleDbDataReader=cmd.ExecuteReader
     
     While dr.Read
         cmbempname.items.add(dr.item(0))
     End While
     dr.close()
End Sub
End Class

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


CrugerBrent

Спасибо, дженитшах..............................