none
Método para preencher vetor com registros de tabelas RRS feed

  • Pergunta

  • Boa tarde!

    Tenho uma tabela com registros que preciso armazenar temporariamente em um vetor. Fiz os códigos:

    [code]

    public int[] preencheVetorApostas(string concurso)
            {
                int[] apostas = new int[50];

                for (int i = 0; i < 50; i++)
                {
                    string queryString = "SELECT " +
                        "n01, n02, n03, n04, n05, n06, n07, n08, n09, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, " +
                        "n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, " +
                        "n41, n42, n43, n44, n45, n46, n47, n48, n49, n50 FROM apostas WHERE concurso=" + concurso;

                    using (OleDbConnection connection = new OleDbConnection(strConexao()))
                    {
                        OleDbCommand command = new OleDbCommand(queryString, connection);
                        connection.Open();
                        apostas[i] = command.ExecuteNonQuery();
                    }
                }
                Connection.Dispose();
                return apostas;
            }

    [/code]

    O método acima não está voltando os valores corretos do vetor, apenas zeros.

    Peço a ajuda de vocês.

    quarta-feira, 22 de fevereiro de 2017 17:38

Respostas

  • O que voce quer fazer? Colocar cada n (n01, n02, n03) em cada aposta?

    Primeiramente ExecuteNonQuery sempre vai retornar zero, pois select (de forma usual) nao altera registros. O comando ExecuteNonQuery  serve para executar comandos como o delete,update, insert e o retorno indica quantos registros foram alterados( deletados, atualizados ou inseridos)

    Segundo, voce executa a mesma query 50 vezes sem necessidade, pois o criterio é sempre o mesmo.

    Terceiro, voce precisa criar um dataset ou usar o reader para que isso funcione.

    O codigo que eu sugiro é este:

    public int[] preencheVetorApostas(string concurso)
    {
    	int[] apostas = new int[50];
    
    
    	string queryString = "SELECT " +
    		"n01, n02, n03, n04, n05, n06, n07, n08, n09, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, " +
    		"n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, " +
    		"n41, n42, n43, n44, n45, n46, n47, n48, n49, n50 FROM apostas WHERE concurso=" + concurso;
    
    	using (OleDbConnection connection = new OleDbConnection(strConexao()))
    	{
    		OleDbCommand command = new OleDbCommand(queryString, connection);
    		connection.Open();
    		OleDbDataReader reader = command.ExecuteReader();
    		while (reader.Read())
    		{
    			for (int i = 0; i < 50; i++)
    			{
    				apostas[i] = reader.GetInt32(i);
    			}
    		}
    	  
    	}
    	
    	Connection.Dispose();
    	return apostas;
    }


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quarta-feira, 22 de fevereiro de 2017 17:50
    Moderador

Todas as Respostas

  • O que voce quer fazer? Colocar cada n (n01, n02, n03) em cada aposta?

    Primeiramente ExecuteNonQuery sempre vai retornar zero, pois select (de forma usual) nao altera registros. O comando ExecuteNonQuery  serve para executar comandos como o delete,update, insert e o retorno indica quantos registros foram alterados( deletados, atualizados ou inseridos)

    Segundo, voce executa a mesma query 50 vezes sem necessidade, pois o criterio é sempre o mesmo.

    Terceiro, voce precisa criar um dataset ou usar o reader para que isso funcione.

    O codigo que eu sugiro é este:

    public int[] preencheVetorApostas(string concurso)
    {
    	int[] apostas = new int[50];
    
    
    	string queryString = "SELECT " +
    		"n01, n02, n03, n04, n05, n06, n07, n08, n09, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, " +
    		"n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, " +
    		"n41, n42, n43, n44, n45, n46, n47, n48, n49, n50 FROM apostas WHERE concurso=" + concurso;
    
    	using (OleDbConnection connection = new OleDbConnection(strConexao()))
    	{
    		OleDbCommand command = new OleDbCommand(queryString, connection);
    		connection.Open();
    		OleDbDataReader reader = command.ExecuteReader();
    		while (reader.Read())
    		{
    			for (int i = 0; i < 50; i++)
    			{
    				apostas[i] = reader.GetInt32(i);
    			}
    		}
    	  
    	}
    	
    	Connection.Dispose();
    	return apostas;
    }


    att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quarta-feira, 22 de fevereiro de 2017 17:50
    Moderador
  • Perfeito. Muito obrigado!


    quarta-feira, 22 de fevereiro de 2017 18:08