Insert Multiples Records to Sql Server Database.
Introduction
Sometimes we need to updates databases by sending more than just one record, so datatables will be very useful in these cases.
I will explain an example about how to insert multiple records from text file to a Sql Server Database.
Background
Datatables were born in Sql Server version 2008, so this object allows store a great amount of records and sending to a database consuming low resources of memory, this object is suitable if you have to transfer a lot records without break down the server.
Using the code
You will need create an console application .net app (c# or vb) to read the text file.
Create a database called NetSamples with the next fields:

After of that, you must create the object DataTable like this:

Run this sentence in your Database:
CREATE TYPE dbo.tbCountry AS TABLE (
    idCountry smallint,
    name varchar(100)
);
Create a console applicattion and after add the datatable structure definition in your code :
/// <summary>
/// This example method generates a DataTable.
/// </summary>
static DataTable GetTable()
{
     DataTable table = new DataTable();
     table.Columns.Add("idCountry", typeof(short));
     table.Columns.Add("name", typeof(string));
     return table;
}
Create a stored procedure that will receive a datatable parameter and after this datatable will be inserte in just one Sql sentence , like this :
CREATE PROCEDURE InsertCountries @dtCountry dbo.tbCountry READONLY AS BEGIN INSERT INTO Country(idCountry,[name]) SELECT idCountry,[name] FROM @dtCountry END GO
Define a function to read the text file and stored each record inside the DataTable called table.
 Copy Code
   Copy Codepublic static void readFile() {
            try
            {
                DataTable table = new DataTable();
                table = GetTable();
                // Create an instance of StreamReader to read from a file.
                // The using statement also closes the StreamReader.
                using (StreamReader sr = new StreamReader(System.Environment.CurrentDirectory + @"\Countries.txt"))
                {
                    string line;
                    int i = 1;
                    // Read and display lines from the file until 
                    // the end of the file is reached. 
                    while ((line = sr.ReadLine()) != null)
                    {
                        table.Rows.Add(i, line);
                        Console.WriteLine(line);
                        i++;
                    }
                }
                //Insert datatable to sql Server
                insert(table);
            }
            catch (Exception e)
            {
                // Let the user know what went wrong.
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }
Define a function to insert dtData (datatable) to Sql Server Database NetSamples.
static void insert(DataTable dtData) {
            SqlConnection con = new SqlConnection(@"Data Source=COBOGPGP8468\SQLSERVER;Initial Catalog=NetSamples;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("InsertCountries", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@dtCountry", dtData);
            cmd.Connection = con;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                Console.WriteLine("Records inserted successfully!");
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
Run the Console Application and You will see:

Search in your database using the SQL sentence : "Select * from Country"

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号