Home

The Records of a Table

 

Data Entry Fundamentals

 

Introduction

So far, we have learned how to create a database and how to create a table. Here are the database and the table we will use:

using System;
using ADODB;

public class Program
{
    static int Main()
    {
        string strSQL;
        object obj = new object();
        ADOX.Catalog catPeople = new ADOX.Catalog();
        ADODB.Connection conPeople = new ADODB.Connection();

        try
        {
            catPeople.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
                              "Data Source='C:\\Programs\\People.mdb';");
            Console.WriteLine("A new Microsoft JET database named " +
                              "People.mdb has been created");

            conPeople.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\People.mdb'",
                           "", "", 0);
            strSQL = "CREATE TABLE Persons(FirstName Text(20), " +
                                          "LastName Text(20), " +
                                          "Gender Text(20));";
            conPeople.Execute(strSQL, out obj, 0);
            Console.WriteLine("A table named Persons has been " +
                              "created in the People.mdb database");
        }
        finally
        {
            conPeople.Close();
        }

        return 0;
    }
}

This creates a Microsoft JET database named People, followed by a table named Persons equipped with three columns.

After creating a table and its column(s), you can populate the database with data. Data entry consists of filling a table with the necessary values. A series of values that corresponds to same levels of columns is called a row or a record.

New Record Creation

Before performing data entry on a table, you must know how the table is structured, the sequence of its columns, the type of data that each column is made of. To enter data in a table, you start with the INSERT combined with the VALUES keywords. The statement uses the following syntax:

INSERT TableName VALUES(Column1, Column2, Column_n)

Alternatively, or to be more precise, you can specify that you are entering data in the table using the INTO keyword between the INSERT keyword and the TableName factor. This is done with the following syntax:

INSERT INTO TableName VALUES(Column1, Column2, Column_n)

The TableName factor must be a valid name of an existing table in the currently selected database. If the name is wrong, the SQL interpreter would simply consider that the table you are referring to doesn't exist. Consequently, you would receive an error.

The VALUES keyword indicates that you are ready to list the values of the columns. The values of the columns must be included in parentheses. Specify the value of each column in the parentheses that follow the VALUES keyword:

Boolean Values: If the column is Boolean-based, you must specify its value as 0 or 1.

Numeric Values: If the column is a numeric type and if the number is an integer, you should provide a valid natural number without the decimal separator. If the column is for a decimal number, you can type the value with its character separator (the period for US English).

Character and String Values: If the data type of a column is a string type, you should include its value between double-quotes. For example, a shelf number can be specified as 'HHR-604' and a middle initial can be given as 'D'.

Date and Time Values: If the column was created for a date or a time data type, you should/must use an appropriate formula with the year represented by 2 or 4 digits. You should also include the date in single-quotes. If you want to specify the year with 2 digits, use the formula:

'yy-mm-dd'

Or

'yy/mm/dd'

You can use the dash symbol "-" or the forward slash "/" as the date separator. An alternative to representing a year is with 4 digits. In this case, you would use the formulas:

'yyyy-mm-dd'

Or

'yyyy/mm/dd'

The year with 4 digits is more precise as it properly expresses a complete year.

A month from January to September can be represented as 1, 2, 3, 4, 5, 6, 7, 8, or 9. Day numbers follow the same logic.

Adjacent Data entry

The most common technique of performing data entry requires that you know the sequence of columns of the table in which you want to enter data. With this subsequent list in mind, enter the value of each field in its correct position.

During data entry on adjacent fields, if you don't have a value for a numeric field, you should type 0 as its value. For a string field whose data you don't have and cannot provide, type two single-quotes to specify an empty field. Here is an example:

using System;
using ADODB;

public class Program
{
    static int Main()
    {
        string strSQL;
        object obj = new object();
        ADOX.Catalog catPeople = new ADOX.Catalog();
        ADODB.Connection conPeople = new ADODB.Connection();

        try
        {
            conPeople.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\People.mdb'", "", "", 0);
            conPeople.Execute("INSERT INTO Persons(FirstName, LastName, Gender) " +
                              "VALUES('James', 'Carlton', 'Male');", out obj, 0);
            Console.WriteLine("A new record has been created in the Persons table");
        }
        finally
        {
            conPeople.Close();
        }

        return 0;
    }
}

Random Data Entry

The adjacent data entry requires that you know the position of each column. The SQL provides an alternative that allows you to perform data entry using the name of a column instead of its position. This allows you to provide the values of fields in any order of your choice.

To perform data entry at random, you must provide a list of the columns of the table in the order of your choice. You can either use all columns or provide a list of the same columns but in your own order. Here is an example:

using System;
using ADODB;

public class Program
{
    static int Main()
    {
        string strSQL;
        object obj = new object();
        ADOX.Catalog catPeople = new ADOX.Catalog();
        ADODB.Connection conPeople = new ADODB.Connection();

        try
        {
            conPeople.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\People.mdb'", "", "", 0);
            conPeople.Execute("INSERT INTO Persons(LastName, Gender, FirstName) " +
                              "VALUES('Germain', 'Male', 'Ndongo');", out obj, 0);
            Console.WriteLine("A new record has been created in the Persons table");
        }
        finally
        {
            conPeople.Close();
        }

        return 0;
    }
}

You don't have to provide data for all columns, just those you want, in the order you want. To do this, enter the names of the desired columns on the right side of the name of the table, in parentheses. The syntax used would be:

INSERT TableName(ColumnName1, Columnname2, ColumnName_n)
VALUES(ValueFormColumnName1, ValueFormColumnName2, ValueFormColumnName_n);

Data Entry Assistance

 

The Nullity of a Field

When performing data entry, you can expect the user to skip any column whose value is not available and move to the next. In some cases, you may require that the value of a column be specified before the user can move on. If you are creating a column and if you want to let the user add or not add a value for the column, type the NULL keyword on the right side of the data type. If you want to require a value for the column, type NOT NULL. Here are examples:

using System;
using ADODB;

public class Program
{
    static int Main()
    {
       ADOX.Catalog catADOX = new ADOX.Catalog();

       catADOX.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
                      "Data Source='C:\\Programs\\VideoCollection.mdb';");
      Console.WriteLine("A new Microsoft JET database named VideoCollection.mdb " +
                       "has been created");

            ADODB.Connection conVideos = new ADODB.Connection();
            object obj = new object();

            conVideos.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\VideoCollection.mdb'",
                           "", "", 0);
            conVideos.Execute("CREATE TABLE Videos(" +
                              "VideoTitle   STRING NOT NULL, " +
                              "Director     STRING NULL, " +
                       "YearReleased SHORT, " +
                       "Rating       BYTE NULL);",
                       out obj, 0);
            Console.WriteLine("A new table named Videos has been created");
            conVideos.Close();

        return 0;
    }
}

In this case, when performing data entry, the user must always provide a value for the VideoTitle column in order to create a record. If you omit to specify the nullity of a field, it is assumed NULL; that's the case for the YearReleased column of the above Videos table.

Auto-Increment

When we study relationships, we will see that, on a table, each record should be uniquely identified. This should be the case even if many records seem to have the same values for each column. We saw already that you can require that the user provide a value for each record of a certain column. In some cases, the user may not have the right value for a column but at the time, the record would need to be created, even if it is temporary. To solve this type of problem and many others, you can create a column that provides its own value. On the other hand, to create a special column that can be used to uniquely identify each record, you can apply an integer data type to it but ask the database engine to automatically provide a numeric value for the column.

If you are creating the column, you can specify its data type as either COUNTER or AUTOINCREMENT. Only one column of a table can have one of these data types. Here is an example:

using System;
using ADODB;

public static class Program
{
    static int Main()
    {
            ADODB.Connection conVideos = new ADODB.Connection();
            object obj = new object();

            conVideos.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\VideoCollection.mdb'",
                           "", "", 0);
            conVideos.Execute("CREATE TABLE Videos(" +
		              "ShelfNumber  COUNTER, " + 
		              "VideoTitle   STRING NOT NULL, " +
			      "Director     STRING NULL, " +
			      "YearReleased SHORT, " +
			      "Rating       BYTE NULL);",
                       	      out obj, 0);
            Console.WriteLine("A new table named Videos has been created");
            conVideos.Close();

        return 0;
    }
}

By default, when you apply the COUNTER or the AUTOINCREMENT data type, when the user creates the first record, the field int the auto-incrementing column receives a number of 1. If the user creates a second record, the auto-incrementing value receives a number of 2, and so on. If you want, you can make the first record receive a number other than 1. You can also make it increment to a value other than 1. To apply this feature, the COUNTER and the AUTOINCREMENT types use a seed as their parentheses:

COUNTER(x,y)

or

AUTOINCREMENT(x,y)

The x value represents the starting value of the records. The y value specifies how much would be added to a value to get the next.

Fields Sizes

When reviewing the data types available for columns, we saw that some of them could use a string-based data type, namely TEXT, CHAR, or VARCHAR. By default, if you create a table and you set a column's data type to TEXT, CHAR, or VARCHAR, it is made to hold 255 characters. If you want, you can control the maximum number of characters that would be allowed in a column during data entry.

To specify the number of characters of the string-based column, add the parentheses to the TEXT, the CHAR, or the VARCHAR data types, and in the parentheses, enter the desired number. Here are examples:

using System;
using ADODB;

public static class Program
{
    static int Main()
    {
            ADODB.Connection conVideos = new ADODB.Connection();
            object obj = new object();

            conVideos.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\VideoCollection.mdb'",
                           "", "", 0);
            conVideos.Execute("CREATE TABLE Videos(" +
		                "ShelfNumber  COUNTER, " +
				"VideoTitle   STRING(120) NOT NULL, " +
				"Director     VARCHAR(80) NULL, " +
				"YearReleased SHORT, " +
				"Rating       TEXT(20) NULL);",
                       out obj, 0);
            Console.WriteLine("A new table named Videos has been created");

	 conVideos.Close();

        return 0;
    }
}
 

Default Values

A default value allows a column to use a value that is supposed to be common to most cells of a particular column. The default value can be set as a constant value or it can use a function that would adapt to the time the value is needed.

To specify a default value, after the name and the data type of a column, type DEFAULT and assign it the desired value, based on the data type. Here is an example:

using System;
using ADODB;

public static class Program
{
    static int Main()
    {
            ADODB.Connection conVideos = new ADODB.Connection();
            object obj = new object();

            conVideos.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source='C:\\Programs\\VideoCollection.mdb'",
                           "", "", 0);
            conVideos.Execute("CREATE TABLE Videos(" +
		              "ShelfNumber  COUNTER, " +
			      "VideoTitle   STRING(120) NOT NULL, " +
			      "Director     VARCHAR(80) NULL, " +
			      "YearReleased SHORT, " +
			      "Rating       TEXT(20) NULL Default='PG-13')",
                              out obj, 0);
            Console.WriteLine("A new table named Videos has been created");
            conVideos.Close();

        return 0;
    }
}

 

 

Previous Copyright © 2007-2012 FunctionX