失踪结果查询从ASP.NET的WebService SQL Server时
问题描述:
伙计们,请我已经试过几乎所有的东西我知道,我也可以实现所有的可能性...失踪结果查询从ASP.NET的WebService SQL Server时
会发生什么事是,当我做出这个选择通过PROC或commandtext,我的数据读取器只返回3条记录,但是我有7个数据库与这些参数。 如果我将这3个标记为已读,并发出新的请购单,则只会将2个发回给我。同样,如果只有一个,最后一个永远不会被带回给我。
这里是我的代码
public List<Documentos> GetDocumentosDisponiveisParaMotorista(string motoristaCpf, string veiculoPlaca,
long transportadora)
{
var retorno = new List<Documentos>();
var command = Banco.GetStoredProcCommand("dbo.SelectDocumentos");
AddInParameter(command, "@MotoristaCpf", motoristaCpf);
AddInParameter(command, "@VeiculoPlaca", veiculoPlaca.ToUpper());
AddInParameter(command, "@TransportadoraId", transportadora);
//var command = Banco.GetSqlStringCommand("SELECT " +
// "TransportadoraId" +
// ", FilialSigla" +
// ", TipoDocumentoId" +
// ", Documento" +
// ", DocumentoSerie" +
// ", MotoristaCpf" +
// ", VeiculoPlaca" +
// ", DocumentoChave" +
// ", DocumentoTransporte" +
// ", TipoDocTransporte" +
// ", NumeroNotaFiscal" +
// ", DestinatarioCpfCnpj" +
// ", LocalEntregaId" +
// ", StatusId" +
// ", Comprovante" +
// ", Transmitido" +
// ", TransmitidoData" +
// ", DataCadastro" +
// ", DataAlteracao " +
// "FROM Documentos WITH(NOLOCK) " +
// "WHERE MotoristaCpf = @MotoristaCpf " +
// "AND VeiculoPlaca = @VeiculoPlaca " +
// "AND TransportadoraId = @TransportadoraId " +
// "AND Transmitido is null ");
//command.Parameters.Add(new SqlParameter("@MotoristaCpf", SqlDbType.NVarChar, 11, "MotoristaCpf"));
//command.Parameters.Add(new SqlParameter("@VeiculoPlaca", SqlDbType.NVarChar, 7, "VeiculoPlaca"));
//command.Parameters.Add(new SqlParameter("@TransportadoraId", SqlDbType.BigInt, 999999999, "TransportadoraId"));
//command.Parameters["@MotoristaCpf"].Value = motoristaCpf;
//command.Parameters["@VeiculoPlaca"].Value = veiculoPlaca.ToUpper();
//command.Parameters["@TransportadoraId"].Value = transportadora;
//command.Connection = Banco.CreateConnection();
//command.Connection.Open();
//command.CommandTimeout = 3600;
using (var dataReader = Banco.ExecuteReader(command))
{
while (dataReader.Read())
{
retorno.Add(dataReader.Read() ? Preencher(dataReader) : null);
}
dataReader.Close();
}
return retorno;
}
我使用SQL Server 2005中这是在asp.net C#WebService的代码。我的连接是使用连接字符串进行的。我不使用NHibernate,我正在使用Microsoft.Practices.EnterpriseLibrary.Data
。
答
由于Crowcoder mentions in the comments您的主要问题是拨打 dataReader.Read()
两次。看看这related question看看如何使用SqlDataReader.Read()
方法。
此外,您无需致电dataReader.Close();
,因为它将在using block的末尾自动处理。
+0
谢谢你们,也是这样,但是,这给了另一个问题,但艾尔雷迪解决了谢谢 –
您正在推进阅读器两次,调用'Read()'两次。不要这样做。 – Crowcoder