Pergunta

Por favor de uma olhada no código a seguir:

using (OleDbConnection openCon = new OleDbConnection(ConfigurationManager.AppSettings["AccessConnectioString"]))
{
                openCon.Open();
                string tc = string.Empty;
                string ttc = string.Empty;
                if (!string.IsNullOrEmpty(QSetId))
                {
                    tc = "select count(*) as [Count] from ABC where QSetId = @qSetId and TText like 'RT*'";
                }
                else
                {
                    tc = "select count(*) as [Count] from PQR where TText like 'RT*'";
                }
                using (OleDbCommand qtc= new OleDbCommand(tc))
                {
                    qtc.Connection = openCon;
                    if (!string.IsNullOrEmpty(QSetId))
                        qtc.Parameters.Add("@qSetId", OleDbType.VarChar).Value = QSetId;
                    OleDbDataReader dr1 = qtc.ExecuteReader();
                    while (dr1.Read())
                    {
                        ttCnt = (int)dr1["Count"];
                    }
                }

                openCon.Close();
}

Eu estou sempre chegando de contagem como 0 em vez de algum valor inteiro.Durante a depuração de eu tomar a consulta e executar no MS ACCESS 2013, ele me dá o resultado correto.Eu não estou conseguindo o que é o problema.

Foi útil?

Solução

Você está recebendo tropeçou pela diferença em COMO caracteres curinga entre consultas executadas no próprio Acesso e consultas executadas a partir de uma aplicação externa.

Quando executar uma consulta a partir de dentro do próprio Access, você precisa usar o asterisco como um caractere curinga: LIKE 'RT*'.

Quando executar uma consulta a partir de uma aplicação externa (como o C# app), você precisa usar o sinal de porcentagem como o caractere curinga: LIKE 'RT%'.

Outras dicas

Tente ExecuteScalar() método

Substituir Esta:

 OleDbDataReader dr1 = qtc.ExecuteReader();
 while (dr1.Read())
 {
    ttCnt = (int)dr1["Count"];
 }

Com Este:

 ttCnt = Convert.ToInt32(qtc.ExecuteScalar());
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top