Mike Trethowan

Pen Truth Contributor

Database Tutorial Source Code :

As promised, here is my complete code for the data base tutorial.  This represents a cleaned up and tested version, so I hope it is helpful to those learning database programming.  Enjoy.

 

 

 

' Project:       My Database
' Programmer:    Mike C. Trethowan
' Date:          November 2, 2009
' Description:   
' 
'
' Program perameters: 
'   Creates an empty database
'   Delets the database
'   Checks if tables exist in the database and return the count
'   Creates an empty table within the database
'   Fills the data grid view with data from a table within the database
'   Adds information to the database table
'   Clears all data from the database table
'   Refreshs the grid view - same function as fill button - provides an example of
'   how one event handler can handle several button presses.
'   This is usefull for a group of Radio Buttons
'
' Notes"
' Under Build Tab Change Machine Type In Configuration Manager To x86
' To Run On 64 bit or Systems Above XP
' May need to configure tool bar - Build to show Configuration Manager
' Add a COM Reference to: Microsoft ADO Ext. 2.8 for DDL and Security
'
' This project requires 8 Buttons, 2 Labels, 2 Text Boxes and 1 Data Grid View:
'
'   Name                    Text
'   btnCreateDatabase       Create Database
'   btnDeleteDatabase       Delete Database
'   btnTablesExist          Tables Exist
'   btnCreateTable          Create Table
'   btnFillGridView         Fill Grid View
'   btnAddData              Add Data To Table
'   btnClearAllEntries      Clear All Table Entries
'   btnRefreshGridView      Refresh Grid View
'
'   Label1                  Enter First Name
'   Label2                  Enter Last Name
'   txbFirstName            First Name
'   txbLastName             Last Name
'
'   DataGridView1

#Region " Imports "

Imports ADOX
Imports System.Data
Imports System.Data.OleDb

#End Region

Public Class frmMain

#Region " Dims "

    Dim dbDelete As String
    Dim dbInsert As String
    Dim dbNameLoc As String
    Dim dbFileName As String
    Dim dbProvider As String
    Dim dbSelectFrom As String
    Dim dbTableName As String
    Dim dbTableCreate As String

#End Region

#Region " Form Loading & Closing "

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        dbFileName = "myDataBase.mdb"
        dbTableName = "myDbTable"
        dbDelete = "DELETE FROM " & dbTableName
        dbSelectFrom = "SELECT * FROM " & dbTableName
        dbInsert = "INSERT INTO " & dbTableName & "(First_Name, Last_Name) VALUES (@First_Name, @Last_Name)"
        dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = "
        dbTableCreate = "CREATE TABLE " & dbTableName & "(First_Name TEXT(20), Last_Name TEXT(20))"
        dbNameLoc = "C:\Visual Studio 2008\Projects\DataBases\" & dbFileName

    End Sub

#End Region

#Region " Button Operations "

    Private Sub btnCreateDatabase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateDatabase.Click

        '  If System.IO.File.Exists(dbNameLoc) Then ' Tests to see if the file exists and returns a boolean True/False
        '    MessageBox.Show(" That Database Already Exists") ' If the file exists the resulting boolean is True
        '   Else ' Since the test needs to also provide for a False condition we place an else statement here
        MsgBox(createEmptyDatabase(dbProvider, dbNameLoc)) ' Call And Show Results
        '  End If ' End of If System.IO.File.Exists

    End Sub ' btnCreateDatabase_Click

    Private Sub btnDeleteDatabase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteDatabase.Click
        ' System.IO.File.Exists result returns a Boolean
        ' System.IO.File.Delete does not throw an Exception
        Try
            If System.IO.File.Exists(dbNameLoc) Then ' Test if file exists
                System.IO.File.Delete(dbNameLoc) ' File exists, delete file
                MsgBox("Database Deleted")
            Else ' Else file was not found
                MsgBox("Database Not Found") ' File not exists
            End If ' End of If System.IO.File.Exists
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub ' btnDeleteDatabase_Click

    Private Sub btnTablesExist_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTablesExist.Click

        ' Here we remove several lines of code simplifying our project.  Simple is always better.
        MsgBox(checkForTables(dbProvider, dbNameLoc, dbTableName)) ' Eliminates IF statement And Calls the Function And Shows The Results

    End Sub ' btnTablesExist_Click

    Private Sub btnCreateTable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateTable.Click

        MsgBox(createDataBaseTable(dbProvider, dbNameLoc, dbTableCreate)) ' Call And Show Results

    End Sub ' btnCreateTable_Click    

    Private Sub btnFillGridView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
                                                            btnFillGridView.Click, btnRefreshGridView.Click

        MsgBox(fillDataTable(dbProvider, dbNameLoc, dbTableCreate)) ' Call And Show Results

    End Sub ' btnFillGridView_Click

    Private Sub btnAddData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddData.Click

        ' Here we will reduce the amount of code to one line and simply display the results of the function
        MsgBox(addData(dbProvider, dbNameLoc, txbFirstName.Text, txbLastName.Text)) ' Call And Show Results

    End Sub 'btnAddData_Click

    Private Sub btnClearAllEntries_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClearAllEntries.Click

        MsgBox(clearDataTable(dbProvider, dbNameLoc, dbTableName)) ' Call And Show Results

    End Sub ' btnClearAllEntries_Click

#End Region

#Region " Database Operations "

    Private Function createEmptyDatabase(ByVal dbConn As String, ByVal dbName As String) As String

        Dim sRtrn As String ' The boolean True/False that gets returned to the calling sub, btnCreateDatabase_Click
        Dim cat As ADOX.Catalog = New ADOX.Catalog()

        Try ' Try to run the following code and catch errors
            cat.Create(dbConn & dbName)
            sRtrn = "Successfully Created A Database"
        Catch ex As Exception ' Catches errors
            sRtrn = ex.Message ' Send Ex Message
        Finally ' Once the Try statement has finished do some more stuff
            cat = Nothing ' Dispose of any opened objects
        End Try ' Finished Trying

        Return sRtrn ' Return the results to the calling sub.

    End Function ' Function createEmptyDatabase

    Private Function createDataBaseTable(ByVal dbConn As String, ByVal dbName As String, ByVal dbTable As String) As String

        Dim sRtrn As String ' Returns Results
        Dim dbConnect As New OleDbConnection(dbConn & dbName) ' Create the database connection object
        Dim dbCommand As New OleDbCommand(dbTable, dbConnect) ' Create the database command to create the table

        Try
            dbConnect.Open() ' Open the database connection
            dbCommand.ExecuteNonQuery() ' initiate the command to create the table
            sRtrn = "Successfully Created A Table"
        Catch ex As Exception ' Catches errors
            sRtrn = ex.Message ' Could not create a table, returns False
        Finally ' Regardless of the outcome, make sure that the database has been closed
            dbConnect.Close() ' Open the database connection
        End Try

        Return sRtrn ' Return the results to the calling sub.

    End Function ' Function createDataBaseTable

    Private Function checkForTables(ByVal dbConn As String, ByVal dbName As String, ByVal dbTable As String) As String

        Dim sRtrn As String ' Returns number of tables found in database
        Dim dbConnect As New OleDbConnection(dbConn & dbName) ' Create the database connection object

        Try
            dbConnect.Open()
            ' Can only create when a connection is open
            Dim dbSchema As DataTable = dbConnect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, dbTable, "TABLE"})
            '  dbConnect.Close()
            sRtrn = "There Are  " & dbSchema.Rows.Count.ToString & " Tables In The Database"
        Catch ex As Exception
            sRtrn = ex.Message ' Send Ex Message
        Finally ' Regardless of the outcome, make sure that the database has been closed
            dbConnect.Close()
        End Try
        Return sRtrn ' Return the results to the calling sub.

    End Function ' Function checkForTables

    Private Function fillDataTable(ByVal dbConn As String, ByVal dbName As String, ByVal dbTable As String) As String

        Dim sRtrn As String ' Returns Results
        Dim dbConnect As New OleDbConnection(dbConn & dbName) ' Create the database connection object
        Dim dataAdapter As New OleDbDataAdapter(dbSelectFrom, dbConnect) ' Adapter connects to the table we want data from
        Dim dbDataSet As New DataSet() ' Creata a dataset to accept data from the table
        Try
            dbConnect.Open() ' Open the database connection
            dataAdapter.Fill(dbDataSet, dbTable) ' Can only fill when a connection is open
            DataGridView1.DataSource = dbDataSet
            DataGridView1.DataMember = dbTable
            sRtrn = "Successfully Retrieved Table Data"
        Catch ex As Exception
            sRtrn = ex.Message ' Send Ex Message
        Finally ' Regardless of the outcome, make sure that the database has been closed
            dbConnect.Close() ' Close the database connection
            dataAdapter.Dispose() ' Cleane up
        End Try

        Return sRtrn ' Return the results to the calling sub.

    End Function ' Function fillDataTable populates/refreshes DataGridView1 with table data

    Private Function addData(ByVal dbConn As String, ByVal dbName As String, ByVal firstName As String, ByVal lastName As String) As String

        Dim sRtrn As String ' Returns Results
        Dim dbConnect As New OleDbConnection(dbConn & dbName) ' Create the database connection object

        Try
            dbConnect.Open() ' Open the database connection
            Dim dbCommand As New OleDbCommand(dbInsert, dbConnect) ' Can only create when a connection is open
            dbCommand.Parameters.AddWithValue("@First_Name", firstName) ' Add data to first column
            dbCommand.Parameters.AddWithValue("@Last_Name", lastName) ' Add data to last column
            dbCommand.ExecuteNonQuery() ' initiate the command to insert data
            sRtrn = "Successfully Added Data."
        Catch ex As Exception ' Catches errors
            sRtrn = ex.Message ' Send Ex Message
        Finally ' Regardless of the outcome, make sure that the database has been closed
            dbConnect.Close() ' Close the database connection
        End Try
        Return sRtrn ' Return the results to the calling sub.

    End Function ' Function addData inserts data into a table

    Private Function clearDataTable(ByVal dbConn As String, ByVal dbName As String, ByVal dbTable As String) As String

        Dim sRtrn As String ' Returns Results
        Dim dbConnect As New OleDbConnection(dbConn & dbName) ' Create the database connection object

        Try
            dbConnect.Open() ' Open the database connection
            Dim dbCommand As New OleDbCommand(dbDelete, dbConnect) ' Create the database command to create the table
            dbCommand.ExecuteNonQuery() ' initiate the command to create the table
            sRtrn = "Successfully Cleared Table Data"
        Catch ex As Exception
            sRtrn = ex.Message ' Send Ex Message
        Finally ' Regardless of the outcome, make sure that the database has been closed
            dbConnect.Close() ' Close the database connection
        End Try

        Return sRtrn ' Return the results to the calling sub.

    End Function ' Sub clearDataTable()

#End Region

End Class

Return to “How To Search A Table Within A Database

Disclaimer: The code in this tutorial is not intended as a final product or by no means the only way this project can be coded. The presented code is for educational purposes only and no warranty is granted or implied. I/we are not responsible for any damages as a result of using this code. Use at your own risk.

Comments are closed.