Row
Constructor for sql server 2008 or higher
protected
void
Page_Load(object
sender, EventArgs
e)
{
RowConstructor_Parameterized_Insert(GetData());
}
private
DataTable
GetData()
{
DataTable
dt = new
DataTable();
dt.TableName
= "MyTab";
dt.Columns.Add("ID",
System.Type.GetType("System.Decimal"));
dt.Columns.Add("NAME",
System.Type.GetType("System.String"));
dt.Columns.Add("ADDRESS",
System.Type.GetType("System.String"));
for
(int
PK = 0; PK < 100; PK++)
{
DataRow
dr = dt.NewRow();
dr["ID"]
= PK;
dr["NAME"]
= "NAME"
+ PK;
dr["ADDRESS"]
= "ADDRESS"
+ PK;
dt.Rows.Add(dr);
dt.AcceptChanges();
}
return
dt;
}
public
static
int
ExecuteQuery(string
Query, string[]
Parameters, object[]
Parameter_Values)
{
int
ret = -1;
SqlConnection
con;
SqlCommand
cmd;
try
{
con
= new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnection"].ToString());
cmd
= new
SqlCommand();
cmd.Connection
= con;
cmd.CommandType
= CommandType.Text;
cmd.CommandText
= Query;
for
(int
PK = 0; PK < Parameters.Length; PK++)
{
cmd.Parameters.Add(new
SqlParameter(Parameters[PK],
Parameter_Values[PK]));
}
con.Open();
ret
= cmd.ExecuteNonQuery();
//For
UPDATE, INSERT, and DELETE statements, the return value is the number
of rows affected by the command.
con.Close();
}
catch
(Exception
ex)
{
}
return
ret;
}
private
static
string
Form_Insert_Query(string[]
strarray, int
L_Count, bool
Intial_Insert)
{
StringBuilder
Query = new
StringBuilder();
string[]
strParameters_New_Insert = strarray.Select(s => "@"
+ s + "_"
+ L_Count).ToArray();
string
Query_Temp = string.Concat("(",
string.Join(",",
strParameters_New_Insert), ")");
if
(Intial_Insert)
{
Query.Append(string.Concat("INSERT
INTO TABROWCONSTRUCTION(",
string.Join(",",
strarray), ")
",
"
VALUES"));
Query.Append(Query_Temp);
}
else
{
Query.Append(@",
");
Query.Append(Query_Temp);
}
return
Query.ToString();
}
private
void
RowConstructor_Parameterized_Insert(DataTable
dt_Upload)
{
int
Loop_times = 0, Row_Count = dt_Upload.Rows.Count, ret = 0,
MyObjParmVal = 0, Total_No_Of_Cols = 0;
const
int
Row_Constructor_Split_Count = 50;
if
(dt_Upload.Rows.Count > 0)
{
try
{
StringBuilder
query = new
StringBuilder();
int
No_of_times = Row_Count / Row_Constructor_Split_Count;
int
reminder = Row_Count % Row_Constructor_Split_Count;
DataRow
dr_Uploadlot = null;
string[]
strParameters_Ins = new
string[]
{
"ID",
"NAME",
"ADDRESS"
};
Total_No_Of_Cols
= strParameters_Ins.Length;
for
(int
KU = 0; KU < No_of_times; KU++)
{
query.Clear();
Loop_times
= KU * Row_Constructor_Split_Count;
object[]
objParameterValues = new
object[Row_Constructor_Split_Count
* Total_No_Of_Cols];
string[]
strParameters = new
string[Row_Constructor_Split_Count
* Total_No_Of_Cols];
dr_Uploadlot
= dt_Upload.Rows[Loop_times];
query.Append(Form_Insert_Query(strParameters_Ins,
Loop_times, true));
MyObjParmVal
= 0;
objParameterValues[MyObjParmVal]
= dr_Uploadlot["ID"].ToString().Trim().Trim();
objParameterValues[MyObjParmVal
+ 1] = dr_Uploadlot["NAME"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 2] = dr_Uploadlot["ADDRESS"].ToString().Trim();
strParameters[MyObjParmVal]
= "@ID_"
+ Loop_times;
strParameters[MyObjParmVal
+ 1] = "@NAME_"
+ Loop_times;
strParameters[MyObjParmVal
+ 2] = "@ADDRESS_"
+ Loop_times;
for
(int
PK = (Loop_times) + 1; PK < (KU + 1) *
Row_Constructor_Split_Count; PK++)
{
dr_Uploadlot
= dt_Upload.Rows[PK];
query.Append(Form_Insert_Query(strParameters_Ins,
PK, false));
MyObjParmVal
= MyObjParmVal + Total_No_Of_Cols;
objParameterValues[MyObjParmVal]
= dr_Uploadlot["ID"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 1] = dr_Uploadlot["NAME"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 2] = dr_Uploadlot["ADDRESS"].ToString().Trim();
strParameters[MyObjParmVal]
= "@ID_"
+ PK;
strParameters[MyObjParmVal
+ 1] = "@NAME_"
+ PK;
strParameters[MyObjParmVal
+ 2] = "@ADDRESS_"
+ PK;
}
ret
= ExecuteQuery(query.ToString(), strParameters, objParameterValues);
if
(ret != -1 && ret > 0)
{
//success.
}
else
{
//failed.
}
query.Clear();
}
if
(reminder != 0)
{
Loop_times
= Row_Constructor_Split_Count * No_of_times;
object[]
objParameterValues = new
object[reminder
* Total_No_Of_Cols];
string[]
strParameters = new
string[reminder
* Total_No_Of_Cols];
dr_Uploadlot
= dt_Upload.Rows[Loop_times];
query.Clear();
query.Append(Form_Insert_Query(strParameters_Ins,
Loop_times, true));
MyObjParmVal
= 0;
objParameterValues[MyObjParmVal]
= dr_Uploadlot["ID"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 1] = dr_Uploadlot["NAME"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 2] = dr_Uploadlot["ADDRESS"].ToString().Trim();
strParameters[MyObjParmVal]
= "@ID_"
+ Loop_times;
strParameters[MyObjParmVal
+ 1] = "@NAME_"
+ Loop_times;
strParameters[MyObjParmVal
+ 2] = "@ADDRESS_"
+ Loop_times;
for
(int
PK = (Loop_times) + 1; PK < Row_Count; PK++)
{
dr_Uploadlot
= dt_Upload.Rows[PK];
query.Append(Form_Insert_Query(strParameters_Ins,
PK, false));
MyObjParmVal
= MyObjParmVal + Total_No_Of_Cols;
objParameterValues[MyObjParmVal]
= dr_Uploadlot["ID"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 1] = dr_Uploadlot["NAME"].ToString().Trim();
objParameterValues[MyObjParmVal
+ 2] = dr_Uploadlot["ADDRESS"].ToString().Trim();
strParameters[MyObjParmVal]
= "@ID_"
+ PK;
strParameters[MyObjParmVal
+ 1] = "@NAME_"
+ PK;
strParameters[MyObjParmVal
+ 2] = "@ADDRESS_"
+ PK;
}
ret
= ExecuteQuery(query.ToString().Trim(), strParameters,
objParameterValues);
if
(ret != -1 && ret > 0)
{
//success.
}
else
{
//failed.
}
query.Clear();
}
}
catch
(Exception
ex)
{
}
}
else
{
//No
Data in DataTable
}
}
You Can Download the Working Code From here.