Click here to Skip to main content
Click here to Skip to main content

Check if a table or field exists in a database

, 13 Nov 2008 CPOL
Rate this:
Please Sign up or sign in to vote.
Function to check if a table or field exists in an MS Access or SQL Server database.

Introduction

These are two functions I wrote in VB.NET using ADO.NET to check and see if a table or a field exists in a database. It can work with MS Access, or SQL Server, or any other OLE database.

Background

Checking if a table or a field exists in an Access database should be a very simple task, but it can become very complicated with ADO.NET. With DAO or ADO in VB 6.0, this was an extremely easy task. Those who have used it will agree. So, I am posting these functions to help other programmers. Hopefully, it will help out some.

Using the code

Here are the functions:

''' <summary>
''' Checks to see if a table exists in Database or not.
''' </summary>
''' <param name="tblName">Table name to check</param>
''' <param name="cnnStr">Connection String to connect to</param>
''' <returns>Works with Access or SQL</returns>
''' <remarks></remarks>

Public Function DoesTableExist(ByVal tblName As String, ByVal cnnStr As String) As Boolean
    ' For Access Connection String,
    ' use "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
    ' accessFilePathAndName

    ' Open connection to the database
    Dim dbConn As New OleDbConnection(cnnStr)
    dbConn.Open()
    
    ' Specify restriction to get table definition schema
    ' For reference on GetSchema see:
    ' http://msdn2.microsoft.com/en-us/library/ms254934(VS.80).aspx

    Dim restrictions(3) As String
    restrictions(2) = tblName
    Dim dbTbl As DataTable = dbConn.GetSchema("Tables", restrictions)

    If dbTbl.Rows.Count = 0 Then
        'Table does not exist
        DoesTableExist = False
    Else
        'Table exists
        DoesTableExist = True
    End If

    dbTbl.Dispose()
    dbConn.Close()
    dbConn.Dispose()
End Function


''' <summary>
''' Checks to see if a field exists in table or not.
''' </summary>
''' <param name="tblName">Table name to check in</param>
''' <param name="fldName">Field name to check</param>
''' <param name="cnnStr">Connection String to connect to</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function DoesFieldExist(ByVal tblName As String, _
                               ByVal fldName As String, _
                               ByVal cnnStr As String) As Boolean
    ' For Access Connection String,
    ' use "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
    ' accessFilePathAndName

    ' Open connection to the database
    Dim dbConn As New OleDbConnection(cnnStr)
    dbConn.Open()
    Dim dbTbl As New DataTable

    ' Get the table definition loaded in a table adapter
    Dim strSql As String = "Select TOP 1 * from " & tblName
    Dim dbAdapater As New OleDbDataAdapter(strSql, dbConn)
    dbAdapater.Fill(dbTbl)

    ' Get the index of the field name
    Dim i As Integer = dbTbl.Columns.IndexOf(fldName)

    If i = -1 Then
        'Field is missing
        DoesFieldExist = False
    Else
        'Field is there
        DoesFieldExist = True
    End If

    dbTbl.Dispose()
    dbConn.Close()
    dbConn.Dispose()
End Function

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Razi Syed
Software Developer (Senior)
United States United States
My area of expertise is developing management database systems for business so that they can efficiently store and lookup existing customer's information and related data, and be able to generate various reports. My goal is to always deliver innovative design and a user friendly interface.

Comments and Discussions

 
QuestionThanks PinmemberMember 1095537229-Aug-14 6:05 
QuestionExcellent! Pinmemberszmilo31-Jul-14 6:40 
GeneralVery Useful PinmemberKMalone24-Mar-14 1:36 
GeneralRe: Very Useful PinmemberRazi Syed28-Mar-14 9:23 
Questioncheck if table exists in particular database PinmemberAhmad Al Halabi29-Sep-13 13:42 
QuestionGood ,, but what if table exists with ZERO Record. [modified] PinmemberRakesh_Sharma237-Jan-13 21:33 
QuestionGreat snippet Pinmemberturbocharged4eva2-Jan-13 5:53 
GeneralMy vote of 5 PinmemberRenato Rolando9-Dec-10 5:02 
GeneralExcellent , thanks for sharing Pinmemberhichem1474-Dec-10 2:29 
Generalgood article PinmemberDonsw7-Feb-09 14:38 
GeneralNice and simple PinmemberPetter Ivarsson24-Nov-08 9:49 
GeneralRe: Nice and simple PinmemberRazi Syed2-Dec-08 19:57 
QuestionDoes the getSchema need the user to have DBA permissions? Pinmemberanushyam17-Nov-08 7:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.1411023.1 | Last Updated 13 Nov 2008
Article Copyright 2008 by Razi Syed
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid