Вот как я это исправил, и пока все работает отлично.
Я создал процедуру
USE [Electrical_ENG]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Silver_Robot_Insert]
@program varchar(50),
@group varchar(50),
@start_Date datetime,
@start_time varchar(50),
@pieces decimal,
@finish_date datetime,
@finish_time varchar(50),
@avarage_part decimal,
@mode_p varchar(50),
@length_p decimal,
@Total_Time_p decimal
AS
DECLARE @err_msg nvarchar(255);
IF NOT EXISTS(SELECT * FROM Silver_Robot WHERE Program_S=@program AND Grpup_S=@group AND Start_Date_S=@start_Date AND Start_Time_S=@start_time AND Pieces_S=@pieces AND Finish_Date_S=@finish_date AND Finish_Time_S=@finish_time AND Average_Part_Cycle_Time_S=@avarage_part AND Mode_S=@mode_p AND Length_S=@length_p AND Total_Time_S=@Total_Time_p)
BEGIN
INSERT INTO Silver_Robot(Program_S,Grpup_S,Start_Date_S,Start_Time_S,Pieces_S,Finish_Date_S,Finish_Time_S,Average_Part_Cycle_Time_S,Mode_S,Length_S,Total_Time_S)
VALUES(@program,@group,@start_Date,@start_time,@pieces,@finish_date,@finish_time,@avarage_part,@mode_p,@length_p,@Total_Time_p)
END
Вставка:
public void Insert_Silver_Robot(String Program_S, String Grpup_S, DateTime Start_Date_S, String Start_Time_S, Decimal Pieces_S, DateTime Finish_Date_S, String Finish_Time_S, double Average_Part_Cycle_Time_S, String Mode_S, double Length_S, double Total_Time_S)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = con_str_S3;
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "Silver_Robot_Insert";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@program", Program_S);
cmd.Parameters.AddWithValue("@group", Grpup_S);
cmd.Parameters.AddWithValue("@start_Date", Start_Date_S);
cmd.Parameters.AddWithValue("@start_time", Start_Time_S);
cmd.Parameters.AddWithValue("@pieces", Pieces_S);
cmd.Parameters.AddWithValue("@finish_date", Finish_Date_S);
cmd.Parameters.AddWithValue("@finish_time", Finish_Time_S);
cmd.Parameters.AddWithValue("@avarage_part", Average_Part_Cycle_Time_S);
cmd.Parameters.AddWithValue("@mode_p", Mode_S);
cmd.Parameters.AddWithValue("@length_p", Length_S);
cmd.Parameters.AddWithValue("@Total_Time_p", Total_Time_S);
//try
//{
conn.Open();
cmd.ExecuteNonQuery();
//}catch(Exception ex)
//{
// MessageBox.Show(ex.Message);
//}
//finally
//{
// if(con.State==ConnectionState.Open)
// {
conn.Close();
// }
// }
}
}
В событии клика при загрузке:
foreach (DataRow importRow in importData.Rows)
{
DateTime Start_Date_tt = ConvertStringToDate(importRow["Start date"].ToString());
DateTime Finish_Date_tt = ConvertStringToDate(importRow["Finish date"].ToString());
Decimal Pieces_tt = ConvertStringToDecimal(importRow["Pieces"].ToString());
double cycle_tt = ConvertStringToDouble(importRow["Average part cycle time"].ToString());
double length_tt = ConvertStringToDouble(importRow["Length_pa"].ToString());
double total_time_tt = cycle_tt * length_tt;
string program_tt = importRow["Program"].ToString();
string group_tt = importRow["Group"].ToString();
string start_time_tt = importRow["Start time"].ToString();
string finish_time_tt = importRow["Finish time"].ToString();
string mode_tt = importRow["Mode"].ToString();
dbactions.Insert_Silver_Robot(program_tt,group_tt,Start_Date_tt,start_time_tt,Pieces_tt,Finish_Date_tt,finish_time_tt,cycle_tt, mode_tt,length_tt,total_time_tt);
}
Снова использование bulkinsert будетлучший способ сделать это, но у меня нет разрешения использовать его на моем сервере.И спасибо за помощь.