In this article I will explain with an example, how to generate QRCode from database in ASP.Net using C# and VB.Net.
 
 

Installing QRCoder package and System.Drawing.Common using Nuget

In order to install QRCoder library using Nuget, please refer my article Install QRCoder library using Nuget.
And for installing System.Drawing.Common package, please refer my article Install System.Drawing.Common from Nuget.
 
 

Database

I have made use of the following table Links with the schema as follow.
Generate QR Code from Database in ASP.Net
 
I have already inserted few records in the table.
Generate QR Code from Database in ASP.Net
 
Note: You can download the database table SQL by clicking the download link below.
            Download SQL file
 
 

HTML Markup

The HTML Markup consists of following control:
GridView – For displaying data.

Columns

The GridView consists of two BoundField columns and a TemplateField column.
The TemplateField consists of an ASP.Net Image control which will be used for displaying QRCode.
 
The GridView has been assigned with an OnRowDataBound event handler.
<asp:GridView runat="server" ID="gvQRCode" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:BoundField HeaderText="Link Id" DataField="LinkId" />
        <asp:BoundField HeaderText="Link" DataField="Link" />
        <asp:TemplateField HeaderText="QRCode">
            <ItemTemplate>
                <asp:Image ID="imgQRCode" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
 
 

Namespaces

You will need to import the following namespaces.
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using QRCoder;
 
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Imaging
Imports QRCoder
 
 

Binding the GridView control in ASP.Net

Inside the Page Load event handler, the BindGrid method is called.
 

BindGrid

Inside this method, the connection string is read from Web.Config file.
Note: For more details on how to read connection string from Web.Config file, please refer my article Read (Get) Connection String from Web.Config file in ASP.Net using C# and VB.Net.
 
The records are fetched from the Customers Table of SQL ServerServer database and copied to DataTable object using Fill method of SqlDataAdapter class.
Finally, DataTable is assigned to the DataSource property of GridView and the GridView is populated.
C#
protected void Page_Load(object  sender,EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindGrid();
    }
}
 
protected void BindGrid()
{
    string  sql = "SELECT LinkId, Link FROM Links";
    string  constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection  con =  new SqlConnection(constr))
    {
        using (SqlCommand  cmd =  new SqlCommand(sql, con))
        {
            using (SqlDataAdapter  sda =  new SqlDataAdapter(cmd))
            {
                using (DataTable  dt =  new DataTable())
                {
                    sda.Fill(dt);
                    gvQRCode.DataSource = dt;
                    gvQRCode.DataBind();
                }
            }
        }
    }
}
 
VB.Net
Protected Sub Page_Load(ByVal  sender As Object,  ByVal  e As EventArgs)Handles Me.Load
    If Not Me.IsPostBackThen
        Me.BindGrid()
    End If
End Sub
 
Protected Sub BindGrid()
    Dim  sql As String  "SELECT LinkId, Link FROM Links"
    Dim  constr As String  ConfigurationManager.ConnectionStrings("constr").ConnectionString
    Using  con As SqlConnection  =  New SqlConnection(constr)
        Using  cmd As SqlCommand  =  New SqlCommand(Sql, con)
            Using  sda As SqlDataAdapter  =  New SqlDataAdapter(cmd)
                Using  dt As DataTable  =  New DataTable()
                    sda.Fill(dt)
                    gvQRCode.DataSource = dt
                    gvQRCode.DataBind()
                End Using
            End Using
        End Using
    End Using
End Sub
 
 

Displaying QR Code Images from database in GridView using C# and VB.Net

Inside the OnRowDataBound event handler, the Image control is referenced.
Then, the value of the Link is retrieved from the Cell and passed to the CreateQrCode method of the QRCoder library which returns a Bitmap image.
Finally, the Bitmap image is saved as PNG image in MemoryStream class, which is later converted to a BASE64 string and assigned to the ImageUrl property of the Image control.
C#
protected void OnRowDataBound(object  sender,GridViewRowEventArgs e)
{
    if  (e.Row.RowType == DataControlRowType.DataRow)
    {
        System.Web.UI.WebControls.Image imgQrCode = (e.Row.FindControl("imgQRCode")as System.Web.UI.WebControls.Image);
        imgQrCode.Height = 100;
        imgQrCode.Width = 100;
        QRCodeGenerator  qrGenerator =  new QRCodeGenerator();
        QRCodeData  qrCodeData = qrGenerator.CreateQrCode(e.Row.Cells[1].Text,QRCodeGenerator.ECCLevel.Q);
        QRCode  qrCode =  new QRCode(qrCodeData);
        using (Bitmap bitMap = qrCode.GetGraphic(20))
        {
            using (MemoryStream  ms =  new MemoryStream())
            {
                 bitMap.Save(ms,ImageFormat.Png);
                byte[] byteImage = ms.ToArray();
                 imgQrCode.ImageUrl = "data:image/png;base64,"  +Convert.ToBase64String(byteImage);
            }
        }
    }
}
 
VB.Net
Protected Sub OnRowDataBound(ByVal  sender As Object,  ByVal  e As GridViewRowEventArgs)
    If  e.Row.RowType = DataControlRowType.DataRowThen
        Dim  imgQrCode As System.Web.UI.WebControls.Image = (TryCast(e.Row.FindControl("imgQRCode"), System.Web.UI.WebControls.Image))
        imgQrCode.Height = 100
        imgQrCode.Width = 100
        Dim  qrGenerator As QRCodeGenerator  =  New QRCodeGenerator()
        Dim  qrCodeData As QRCodeData  = qrGenerator.CreateQrCode(e.Row.Cells(1).Text,QRCodeGenerator.ECCLevel.Q)
        Dim  qrCode As QRCode  =  New QRCode(qrCodeData)
        Using  bitMap As Bitmap = qrCode.GetGraphic(20)
            Using  ms As MemoryStream  =  New MemoryStream()
                 bitMap.Save(ms,ImageFormat.Png)
                Dim  byteImage As Byte() = ms.ToArray()
                 imgQrCode.ImageUrl = "data:image/png;base64,"  &Convert.ToBase64String(byteImage)
            End Using
        End Using
    End If
End Sub
 
 

Screenshot

Generate QR Code from Database in ASP.Net
 
 

Downloads