2014-12-09 3 views
-4

В настоящее время я работаю над C# проекта, и я бег запроса вставитьКак проверить количество изменяемых строк на ExecuteNonQuery

while (reader.Read()) 
{ 
    SqlCommand GDR_EnumVoiePublique = new SqlCommand("INSERT INTO GDR_EnumVoiePublique(VP_Id,VP_Nom,OVP_Id,LVP_Id,GVP_Id,Mun_Id,VP_Description)VALUES(@VP_Id,@VP_Nom,@OVP_Id,@LVP_Id,@GVP_Id,@Mun_Id,@VP_Description)", connection); 

    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Id", Guid.NewGuid()); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Nom", VP_Nom); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@OVP_Id", OVP_Id == null ? (object)DBNull.Value : OVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@LVP_Id", LVP_Id == null ? (object)DBNull.Value : LVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@GVP_Id", GVP_Id == null ? (object)DBNull.Value : GVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@Mun_Id", Mun_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Description", VP_Description); 
    GDR_EnumVoiePublique.ExecuteNonQuery(); 
    //count = (Int32)GDR_EnumVoiePublique.Executescalar(); 
    //countResult = GDR_EnumVoiePublique.ExecuteScalar(); 
} 

Есть ли способ, я могу видеть, сколько строк во время этого было вставлено запрос?

+0

Использовать счетчик верхней части вашего 'while' утверждения? –

+0

ответ в заголовке –

ответ

3

Ну, вы можете использовать простой счетчик для этого.

int counter = 0; 
while(reader.Read()) 
{ 
    ... 
    ... 
    if(GDR_EnumVoiePublique.ExecuteNonQuery() > 0) 
    { 
     counter++; 
    } 
} 

Для INSERT заявления, ExecuteNonQuery method возвращает количество строк inserterd. Это значит; GDR_EnumVoiePublique.ExecuteNonQuery() > 0 строки выполняют ваш запрос INSERT, и если он успешный, возвращает 1, если нет, возвращает 0.

+0

, он дает исключение Нарушение ограничения PRIMARY KEY 'PK_GDR_ENUMVOIEPUBLIQUE'. Невозможно вставить дубликат ключа в объект 'dbo.GDR_EnumVoiePublique'. Заявление было прекращено. – JHDesigne

+1

Это не проблема ответа Soner, проблема вызвана вашими данными. Отлаживайте и проверяйте свои значения. – DatRid

+1

@JHDesigne Очевидно, вы пытаетесь вставить строку с ** таким же ** значением первичного ключа, что невозможно. Отлаживайте свой код и проверяйте свои значения в режиме отладки. Я уверен, что вы найдете одни и те же значения для столбца первичного ключа. –

0

ExecuteNonQuery() возвращает количество вставленных строк, когда SET NOCOUNT OFF.

Int affectedRows; 

while (reader.Read()) 
{ 
    SqlCommand GDR_EnumVoiePublique = new SqlCommand("INSERT INTO GDR_EnumVoiePublique(VP_Id,VP_Nom,OVP_Id,LVP_Id,GVP_Id,Mun_Id,VP_Description)VALUES(@VP_Id,@VP_Nom,@OVP_Id,@LVP_Id,@GVP_Id,@Mun_Id,@VP_Description)", connection); 

    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Id", Guid.NewGuid()); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Nom", VP_Nom); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@OVP_Id", OVP_Id == null ? (object)DBNull.Value : OVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@LVP_Id", LVP_Id == null ? (object)DBNull.Value : LVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@GVP_Id", GVP_Id == null ? (object)DBNull.Value : GVP_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@Mun_Id", Mun_Id); 
    GDR_EnumVoiePublique.Parameters.AddWithValue("@VP_Description", VP_Description); 

    affectedRows += GDR_EnumVoiePublique.ExecuteNonQuery(); 
} 
+0

Я уже пробовал что-то подобное, но он дает мне исключение Нарушение ограничения PRIMARY KEY 'PK_GDR_ENUMVOIEPUBLIQUE'. Невозможно вставить дубликат ключа в объект 'dbo.GDR_EnumVoiePublique'. Заявление было прекращено. – JHDesigne

+0

@JHDesigne: Я думаю, что вы вставляете дублирующее значение в таблицу 'dbo.GDR_EnumVoiePublique', которая имеет ограничение PRIMARY KEY. Поэтому вставьте уникальное значение в таблицу, чтобы избежать ошибки. –

+0

Я удалил все содержимое таблицы, так что я так не думаю – JHDesigne

Смежные вопросы