Strano comportamento tra DataReader e DataAdapter

venerdì 06 settembre 2013 - 11.43
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows Server 2008 R2  |  Visual Studio 2002  |  SQL Server 2008 R2

nico839 Profilo | Senior Member

Salve a tutti, ho un piccolo problema tra la macchine di sviluppo e la macchina di pubblicazione. Sviluppando su windows 8 professional a 64 bit, su sql server 2012 su windows server 2012 e pubblicando l'app su windows server 2012 con sql server 2012 ( .Net Framework 4.0), se utilizzo come codice :
Dim cmdSql As SqlCommand cmdSql = New SqlCommand(_command, conn) conn.Open() Dim _dt As New DataTable Dim r As SqlDataReader r = cmdSql.ExecuteReader() If r.Read() Then _dt.Load(r) End If conn.Close()
nel datatable mi trovo un record in meno, il primo in ordine non viene caricato. Mentre se utilizzo il codice:

Dim _SqlCommand As New System.Data.SqlClient.SqlCommand(_SQL, _SQLconnection) Dim _SqlDataAdapter As New System.Data.SqlClient.SqlDataAdapter() _SqlDataAdapter.SelectCommand = _SqlCommand Dim _DataTable As New DataTable() _SqlDataAdapter.Fill(_DataTable)
Ottengo tutti i record aspettati.

se la versione che ritorna un record in meno la pubblico su di un server windows server 2008 con sql server 2008 invece funziona correttamente. Cosa potrebbe essere?



Ciao.
Nicolas

alx_81 Profilo | Guru

>Salve a tutti,
ciao

il primo codice è errato, perchè se fai una read, sposti il puntatore.. quindi poi la load non carica tutto.
Sostituisci If r.Read() con If r.HasRows.

I due metodi sono però completamente diversi, quindi non puoi paragonarli.
Il problema è che in un caso un codice torna un record in meno rispetto all'altro. E la cosa mi sembra strana, io mi aspetterei in entrambi i casi il record mancante..
Sei sicuro che il codice sia identico? Mi sembra molto strano.. se una versione torna un record in meno, non conosco alcun bug per cui su un altro server si comporti diversamente..
Comunque va fixato il codice come ti dicevo sopra
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

nico839 Profilo | Senior Member

Ciao, innanzitutto scusa il ritardo ma tra ferie e consegne urgenti di progetti sono stato un po occupato.
Dei codici sono sicuro perchè quello errato è stato preso da un tutorial dello strumento di sviluppo che utilizziamo, l'altro invece è quello modificato per ovviare all'errore. Non mi spiego perchè i due risultati diversi del codice errato su due sistemi diversi, appena avrò un po di tempo indagherò. Intanto grazie mille per la delucidazione.
Ciao.
Nicolas
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5