' Employee class definition Public Class Employee Public Property EmployeeID As Integer Public Property FirstName As String Public Property LastName As String Public Property Department As String Public Property Salary As Decimal Public ReadOnly Property FullName As String Get Return $"FirstName LastName" End Get End Property End Class
Return employees End Function This approach loads all data into memory and works well for data binding.
Using connection As New SqlConnection(connectionString) Dim query As String = "SELECT EmployeeID, FirstName, LastName, Department, Salary FROM Employees" Dim command As New SqlCommand(query, connection) Try Await connection.OpenAsync() Dim reader As SqlDataReader = Await command.ExecuteReaderAsync() While Await reader.ReadAsync() Dim emp As New Employee() emp.EmployeeID = Convert.ToInt32(reader("EmployeeID")) emp.FirstName = reader("FirstName").ToString() emp.LastName = reader("LastName").ToString() emp.Department = reader("Department").ToString() emp.Salary = Convert.ToDecimal(reader("Salary")) employees.Add(emp) End While reader.Close() Catch ex As SqlException MessageBox.Show("SQL Error: " & ex.Message) End Try End Using vb.net code to retrieve data from sql server
Public Shared Function GetAllEmployees() As List(Of Employee) Dim employees As New List(Of Employee)() Using conn As New SqlConnection(connectionString) Dim sql As String = "SELECT EmployeeID, FirstName, LastName, Department, Salary FROM Employees ORDER BY LastName" Using cmd As New SqlCommand(sql, conn) conn.Open() Using reader As SqlDataReader = cmd.ExecuteReader() While reader.Read() employees.Add(New Employee() With .EmployeeID = reader.GetInt32(0), .FirstName = reader.GetString(1), .LastName = reader.GetString(2), .Department = reader.GetString(3), .Salary = reader.GetDecimal(4) ) End While End Using End Using End Using Return employees End Function End Class
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50), LastName NVARCHAR(50), Department NVARCHAR(50), Salary DECIMAL(10,2) ); SqlDataReader provides the fastest read performance for large result sets but is read-only and forward-only. ' Employee class definition Public Class Employee Public
Return dataTable End Function
DataGridView1.DataSource = employees Label1.Text = $"Loaded employees.Count records" Button1.Enabled = True End Sub Here's a complete working example with a helper class: .FirstName = reader.GetString(1)
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' Show loading indicator Button1.Enabled = False Label1.Text = "Loading data..." Dim employees As List(Of Employee) = Await GetEmployeesAsync()
Imports System.Data.SqlClient Public Function GetEmployeesWithReader() As List(Of Employee) Dim employees As New List(Of Employee)() Dim connectionString As String = "Server=localhost;Database=YourDatabase;Integrated Security=True;"
Return dataTable End Function For Windows Forms or WPF applications, use async methods to keep the UI responsive.
Not sure where to start? In this mini series I answer many of the questions beginners have about learning to DJ.