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.

public 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"

posted @ 2017-03-16 15:36  KSalomo  阅读(224)  评论(0编辑  收藏  举报