How to merge tables in a Dataset - Sql Server

The DataSet serves as a container that holds a copy of the data retrieved through SQL statements. By using the SqlDataAdapter object, we can populate a DataTable within the DataSet. The Fill method in the SqlDataAdapter allows us to retrieve data from the data source and populate the DataTable in the DataSet.

One advantage of using the DataSet is the ability to populate it with multiple tables simultaneously using the SqlDataAdapter object. This means that we can retrieve and store data from multiple tables in a single operation, simplifying the data retrieval process.


The DataTableCollection within the DataSet is responsible for holding zero or more DataTable objects. These DataTable objects represent the individual tables within the DataSet, each containing rows and columns of data.

Merge method

In certain situations, we may need to combine the results of multiple SQL queries into a single result set. To achieve this, we can utilize the Merge method provided by the DataSet. The Merge method allows us to merge the contents of multiple DataTables within the DataSet into a single DataTable. It is important to note that the tables involved in the merge operation should have identical structures, meaning that the columns should have similar data types. This ensures compatibility and consistency in combining the data.

By using the Merge method, we can consolidate data from multiple tables into a single result set, enabling us to perform further analysis or processing on the combined data.

Full Source VB.NET
Imports System.Data.SqlClient Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim connetionString As String Dim connection As SqlConnection Dim command As SqlCommand Dim adapter As New SqlDataAdapter Dim ds As New DataSet Dim dt As DataTable Dim firstSql As String Dim secondSql As String Dim i As Integer connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password" firstSql = "Your First SQL Statement Here" secondSql = "Your Second SQL Statement Here" connection = New SqlConnection(connetionString) Try connection.Open() command = New SqlCommand(firstSql, connection) adapter.SelectCommand = command adapter.Fill(ds, "Table(0)") adapter.SelectCommand.CommandText = secondSql adapter.Fill(ds, "Table(1)") adapter.Dispose() command.Dispose() connection.Close() ds.Tables(0).Merge(ds.Tables(1)) dt = ds.Tables(0) For i = 0 To dt.Rows.Count - 1 MsgBox(dt.Rows(i).Item(0) & " -- " & dt.Rows(i).Item(1)) Next Catch ex As Exception MsgBox("Can not open connection ! ") End Try End Sub End Class


DataSet's Merge method provides the capability to combine the results of multiple SQL queries into a single result set, provided that the tables involved have identical structures.