Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C# ::: C# + Bancos de Dados ::: DbDataReader

Entendendo as classes DbDataReader, OdbcDataReader, OleDbDataReader, SqlDataReader e outras derivações

Quantidade de visualizações: 10922 vezes
A classe DBDataReader é usada para ler dados obtidos a partir de um comando SQL. Esta classe é abstrata, e, portanto, nunca usada diretamente em nossos códigos. Em vez disso usamos OdbcDataReader, OleDbDataReader, SqlDataReader e outras classes derivadas de DbDataReader. Veja sua posição na hierarquia de classes da plataforma .NET:

System.Object 
  System.MarshalByRefObject 
    System.Data.Common.DbDataReader

Entre as classes derivadas de DbDataReader podemos citar System.Data.DataTableReader, System.Data.Odbc.OdbcDataReader, System.Data.OleDb.OleDbDataReader, System.Data.OracleClient.OracleDataReader, System.Data.SqlClient.SqlDataReader, System.Data.SqlServerCe.SqlCeDataReader e MySql.Data.MySqlClient.MySqlDataReader (no driver .NET do MySQL). É claro que há muitos drivers de bancos de dados para .NET que também optam por descender seu DataReader de DbDataReader.

O objetivo principal da classe DbDataReader é fornecer uma forma de navegar os registros retornados como resultado de um comando SQL. Esta navegação é apenas para frente, ou seja, não é possível voltar para os registros já lidos.

Veja um trecho de código no qual usamos um objeto da classe OdbcDataReader para percorrer todos os registros contidos em uma determinada tabela do banco de dados. Note que exibimos o nome de cada cliente em uma mensagem MessageBox:

private void button1_Click(object sender, EventArgs e){
  // obtém a conexão com o banco de dados
  OdbcConnection conn = ConexaoODBC.obterConexao();

  if(conn != null){
    // obtém todos os clientes cadastrados
    OdbcCommand cmd = new OdbcCommand("SELECT * FROM clientes", 
      conn);

    // obtém os dados retornados em forma de DataReader
    OdbcDataReader dr = cmd.ExecuteReader();

    // vamos exibir o nome de cada cliente encontrado
    while(dr.Read()){
      MessageBox.Show(dr["nome"].ToString());
    }

    // fecha o DataReader
    dr.Close();
    
    // fecha a conexão
    ConexaoODBC.fecharConexao();
  }
}

Se estiver usando SQL Server, o DataReader a ser usado é SqlDataReader. Para finalizar, observe que um DataReader é criado sempre como resultado do método ExecuteReader() da classe DbCommand (e suas classes derivadas), ou seja, não é comum chamar o construtor desta classe.

Link para compartilhar na Internet ou com seus amigos:

PHP ::: Dicas & Truques ::: Data e Hora

Datas e horas em PHP - Como obter o timestamp do primeiro dia do mês e ano informados

Quantidade de visualizações: 9728 vezes
Nesta dica eu mostrarei como é possível obter o timestamp do primeiro dia de um determinado mês e ano.

O "Unix timestamp" contém o número de segundos entre a "Unix Epoch" (1 de janeiro de 1970, às 00:00:00 GMT) e o tempo decorrido desde então.

Veja o código PHP completo para o exemplo:

<html>
<head>
<title>Estudando PHP</title>
</head>
<body>
 
<?php
  $mes = 1; // 1 = janeiro;
  $ano = 2021;
  $primeiro_dia = mktime(0, 0, 0, $mes, 1, $ano);
  echo "O timestamp do primeiro dia do mês e ano 
    informado é: " . $primeiro_dia;
?>
 
</body>
</html>

Ao executar este código nós teremos o seguinte resultado

O timestamp do primeiro dia do mês e ano informado é: 1609455600


Android Java ::: android.widget ::: Button

Como detectar um clique em um botão do Android usando setOnClickListener() e exibir uma mensagem AlertDialog

Quantidade de visualizações: 1438 vezes
O método setOnClickListener() nos permite definir a ação que será disparada ao clicarmos em um botão. Note que primeiro nós localizamos o botão no arquivo XML de layout usando o método findViewById() da classe View.

Comece analisando o arquivo XML de layout no qual criamos um botão e o colocamos como filho de um elemento LinearLayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
  http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  tools:context=".MainActivity">

  <Button xmlns:android="
    http://schemas.android.com/apk/res/android"
    android:id="@+id/btn_enviar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btn_enviar"
    android:textAllCaps="false"
    />
</LinearLayout>

E agora o código Java no arquivo MainActivity.java:

package com.example.estudosandroid;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // vamos detectar um clique no botão e exibir uma mensagem AlertDialog
    Button button = (Button) findViewById(R.id.btn_enviar);
    button.setOnClickListener(new View.OnClickListener(){
      public void onClick(View view) {
        AlertDialog dialogo = new
          AlertDialog.Builder(MainActivity.this).create();
        dialogo.setTitle("Aviso");
        dialogo.setMessage("Esta é uma mensagem de aviso");
        dialogo.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
          new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which){
              dialog.dismiss(); // fecha o AlertDialog
            }
          }
        );
        dialogo.show();
      }
    });
  }
}



Java ::: Classes e Componentes ::: JMenuBar, JMenu, JMenuItem e Afins

Java Swing - Como usar objetos da classe JCheckBoxMenuItem como itens de menu de suas aplicações Java Swing

Quantidade de visualizações: 8444 vezes
Neste exemplo mostrarei como usar objetos da classe JCheckBoxMenuItem como itens de um menu. Tais itens podem ser usados quando o usuário puder marcar uma ou mais opções, em um grupo relacionado de opções.

Veja o resultado na imagem abaixo:



E agora o código completo para o exemplo:

 
package arquivodecodigos;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Estudos extends JFrame{
  JCheckBoxMenuItem cores[];
  Color valCores[] = {Color.red, Color.white,
    Color.green};  
  String nomeCores[] = {"Vermelho", "Branco",
    "Verde"};
 
  public Estudos(){
    super("Menus");
 
    // Cria a barra de menus
    JMenuBar barra = new JMenuBar();
    setJMenuBar(barra);
 
    // Cria um menu
    JMenu formatar = new JMenu("Formatar");
     
    // Cria o menu de cor de fundo
    JMenu item1 = new JMenu("Cor de Fundo");
    
    // Adiciona o segundo JMenu ao primeiro
    formatar.add(item1);
 
    cores = new JCheckBoxMenuItem[valCores.length];
 
    Gerenciador gerenciador = new Gerenciador();
  
    for(int i = 0; i < valCores.length; i++){
      cores[i] = new JCheckBoxMenuItem(nomeCores[i]);
      item1.add(cores[i]);
      cores[i].addItemListener(gerenciador);
    } 
 
    // Adiciona o menu à barra de menus
    barra.add(formatar);
 
    setSize(300, 150);
    setVisible(true);    
  }
 
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
 
  private class Gerenciador implements ItemListener{
    public void itemStateChanged(ItemEvent e){
      String marcadas = "As checkbox marcadas são:\n\n";     
  
      for(int i = 0; i < cores.length; i++){
        if(cores[i].isSelected()){
          marcadas += nomeCores[i] + "\n";
        }
      }
 
      JOptionPane.showMessageDialog(null, marcadas); 
    }
  }
}



Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout

Como usar o gerenciador de layout GridBagLayout em suas aplicações Java Swing

Quantidade de visualizações: 12089 vezes
O gerenciador de layout GridBagLayout é um dos mais complexos e mais flexíveis. Embora possa parecer, esta classe não é uma sub-classe de GridLayout, como mostra sua posição na hierarquia de classes Java:

java.lang.Object
  java.awt.GridBagLayout

Esta classe implementa as interfaces LayoutManager, LayoutManager2 e Serializable.

A vantagem do gerenciador de layout GridBagLayout em relação ao GridLayout, é que, com o GridBagLayout nós podemos fazer com que os componentes nas linhas e colunas possam ter diferentes tamanhos e às vezes ocupar múltiplas linhas e colunas.

O trecho de código abaixo mostra a forma mais simples de se criar um GridBagLayout. Veja que os botões são arranjados de forma horizontal na janela. É claro que sem os ajustes necessários, não tiramos muito proveito do uso deste gerenciador (mas isso será visto em outras dicas dessa seção):

import javax.swing.*;
import java.awt.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("Como usar a classe GridBagLayout");

    // define o layout
    setLayout(new GridBagLayout());

    // adiciona componentes à janela
    add(new JButton("Botão 1"));
    add(new JButton("Botão 2"));
    add(new JButton("Botão 3"));
    add(new JButton("Botão 4"));
    
    setSize(350, 150);
    setVisible(true);    
  }

  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Ao executar este código Java Swing nós teremos o seguinte resultado:




Python ::: Dicas & Truques ::: Lista (List)

Como ordenar uma lista de inteiros em Python de acordo com a soma dos dígitos de seus elementos usando uma função lambda

Quantidade de visualizações: 559 vezes
Nesta dica mostrarei como podemos usar uma função lambda em Python para ordenar uma lista de inteiros de acordo com a soma dos seus dígitos. Este é um código muito interessante e que permitirá um melhor entendimento de funções lambda em Python.

Veja o código completo para o exemplo:

# método usado para ordenar a lista de acordo com a soma
# de seus dígitos
def ordenar(vetor):
  return sorted(vetor, key=lambda n: sum(int(c) for c in str(n) if c != "-"))

# função principal do programa
def main():
  # vamos criar uma lista de inteiros
  valores = [21, 10, 8, 32, 70, 41, 40, 11]
  # vamos exibir a lista original
  print("Lista na ordem original: {0}".format(valores))
  
  # agora vamos ordenar de acordo com a soma dos dígitos
  lista_ordenada = ordenar(valores)
  print("Lista ordenada: {0}".format(lista_ordenada))
  
if __name__== "__main__":
  main()

Ao executarmos este código Python nós teremos o seguinte resultado:

Lista na ordem original: [21, 10, 8, 32, 70, 41, 40, 11]
Lista ordenada: [10, 11, 21, 40, 32, 41, 70, 8]


Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby

Anúncio Patrocinado
Chat de Sexo - Site para adultso - Maiores de 18 anos. Converse com pessoas de todo o Brasil, de forma discreta e anônima


© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 11 usuários muito felizes estudando em nosso site.