C# сохранить datatable в sqlserver с помощью класса sqlhelper
Я пытаюсь сохранить dataTable в SQL server. Я могу сохранять записи, но я пытаюсь сохранить только три записи, но записи дублируются(3 раза) в таблице SQL. Я не знаю, почему его дублируют. Кто-нибудь, пожалуйста, помогите мне решить эту проблему как можно скорее
Что я уже пробовал:
Here is My code : C#: DataTable InfoTB = new DataTable("infotb"); DataColumn DC_Name = new DataColumn("name", typeof(string)); DataColumn DC_Age = new DataColumn("age", typeof(string)); DataColumn DC_Details = new DataColumn("details", typeof(string)); InfoTB.Columns.Add(DC_Name); InfoTB.Columns.Add(DC_Age); InfoTB.Columns.Add(DC_Details); InfoTB.Rows.Add("Mano", "27", "Programmer"); InfoTB.Rows.Add("Jhon", "50", "Analyst"); InfoTB.Rows.Add("Diwani", "26", "Tester"); DataSet ds = new DataSet(); ds.Tables.Add(InfoTB); SqlConnection sqlConn = new SqlConnection(localconstr); SqlCommand ins_cmd = new SqlCommand("Insert_Info", sqlConn); ins_cmd.CommandType = CommandType.StoredProcedure; ins_cmd.Parameters.Add("@tblinfo", ds.Tables["infotb"]); SqlHelper.UpdateDataset(ins_cmd, null, null, ds, "infotb"); Stored Procedure : ================= CREATE PROCEDURE [dbo].[Insert_Info] @tblinfo infoType READONLY as Begin insert into infotb (name,age,details) SELECT name,age,details FROM @tblinfo End UserDefinedTableType ===================== CREATE TYPE [dbo].[infoType] AS TABLE( [name] [varchar](50) NULL, [age] [varchar](10) NULL, [details] [varchar](250) NULL ) GO Table Script: ============ CREATE TABLE [dbo].[infotb]( [ID] [int] IDENTITY(1000,1) NOT NULL, [Name] [varchar](50) NULL, [Age] [varchar](50) NULL, [Details] [varchar](150) NULL, [RID] [uniqueidentifier] ROWGUIDCOL NOT NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[infotb] ADD CONSTRAINT [DF_infotb_RID] DEFAULT (newid()) FOR [RID] GO
Wendelius
С помощью отладчика убедитесь, что вы не просто вызываете метод C# дважды
SnvMohan
Я проверил, что методы выполняются только один раз
Wendelius
Как работает метод SqlHelper.UpdateDataset выглядит так?
SnvMohan
общественная статический недействительным UpdateDataset(sqlcommand, который команды insertcommand, deletecommand, принадлежащие sqlcommand, который, sqlcommand, который updateCommand, набор данных, набор данных, строка таблицы)
{
//если (команды insertcommand == значение null) бросить новое исключение ArgumentNullException("команды insertcommand");
//если (deletecommand, принадлежащие == значение null) бросить новое исключение ArgumentNullException("deletecommand, принадлежащие");
//if (updateCommand == null) throw new ArgumentNullException ("updateCommand");
if (tableName = = null | / tableName.Length == 0) throw new ArgumentNullException ("tableName");
// Создайте SqlDataAdapter и избавьтесь от него после того, как мы закончим
использование (SqlDataAdapter dataAdapter = new SqlDataAdapter())
{
// Установка команд адаптера данных
if (updateCommand != null) dataAdapter.UpdateCommand = updateCommand;
если (выберите вкладку != значение null) объекта dataadapter.Команды insertcommand = команды insertcommand;
если (deletecommand, принадлежащие != значение null) объекта dataadapter.Deletecommand, принадлежащие = deletecommand, принадлежащие;
// Обновление изменений набора данных в источнике данных
объект DataAdapter.Обновление (dataSet, tableName);
// Зафиксируйте все изменения, внесенные в набор данных
набор данных.Метод acceptchanges();
}
}