![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Você está aqui: Cards de |
||
|
||
|
|
||
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter os tipos de dados suportados pelo MySQL e seus correspondentes JDBC usando o método getTypeInfo() da interface DatabaseMetaDataQuantidade de visualizações: 6500 vezes |
|
Em algumas situações precisamos obter os tipos de dados suportados pelo MySQL e mapeá-los para seus correspondentes JDBC. Esta não é uma tarefa fácil, mas que, com uma pequena ajuda dos recursos de reflexão do Java, pode ser realizada depois de algumas xícaras de café. O primeiro passo é obter os tipos de dados suportados pelo MySQL com uma chamada ao método getTypeInfo() da interface DatabaseMetaData. Os campos do ResultSet que nos interessam são TYPE_NAME e DATA_TYPE. TYPE_NAME traz o nome do tipo de dados no MySQL enquanto DATA_TYPE traz o tipo JDBC correspondente como um inteiro. Assim, o que temos que fazer é usar reflexão para obter todos os campos da classe java.sql.Types e efetuar um mapeamento entre os tipos. Veja o código completo para o exemplo:
package estudosbancodados;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
public class EstudosBancoDados{
static Map mapa; // usado para mapear os tipos JDBC
public static void main(String[] args) {
// strings de conexão
String databaseURL = "jdbc:mysql://localhost/estudos";
String usuario = "root";
String senha = "osmar1234";
String driverName = "com.mysql.jdbc.Driver";
try {
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
// vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
DatabaseMetaData dbmd = conn.getMetaData();
// vamos obter os tipos de dados suportados por esta versão do MySQL
// e seus correspondentes JDBC
ResultSet tiposDados = dbmd.getTypeInfo();
while(tiposDados.next()){
System.out.println("MySQL: " + tiposDados.getString("TYPE_NAME") + " - JDBC: "
+ getJdbcTypeName(Integer.parseInt(tiposDados.getString("DATA_TYPE"))));
}
// vamos fechar o ResultSet
tiposDados.close();
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
catch (Exception e) {
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
}
}
// Este método retorna o nome de um tipo JDBC
// O retorno é null se o tipo JDBC não puder ser reconhecido
public static String getJdbcTypeName(int jdbcType){
// vamos usar reflection para mapear valores inteiros a seus nomes
if(mapa == null) {
mapa = new HashMap();
// vamos obter todos os campos da classe java.sql.Types
Field[] campos = java.sql.Types.class.getFields();
// vamos percorrer os campos
for(int i = 0; i < campos.length; i++){
try{
// vamos obter o nome do campo
String nome = campos[i].getName();
// vamos obter o valor do campo
Integer valor = (Integer)campos[i].get(null);
// vamos adicionar ao mapa
mapa.put(valor, nome);
}
catch(IllegalAccessException e){
System.out.println("Ops: " + e.getMessage());
}
}
}
// vamos retornar o nome do tipo JDBC
return (String)mapa.get(new Integer(jdbcType));
}
}
O resultado da execução deste código foi: MySQL: BIT - JDBC: BIT MySQL: BOOL - JDBC: BIT MySQL: TINYINT - JDBC: TINYINT MySQL: TINYINT UNSIGNED - JDBC: TINYINT MySQL: BIGINT - JDBC: BIGINT MySQL: BIGINT UNSIGNED - JDBC: BIGINT MySQL: LONG VARBINARY - JDBC: LONGVARBINARY MySQL: MEDIUMBLOB - JDBC: LONGVARBINARY MySQL: LONGBLOB - JDBC: LONGVARBINARY MySQL: BLOB - JDBC: LONGVARBINARY MySQL: TINYBLOB - JDBC: LONGVARBINARY MySQL: VARBINARY - JDBC: VARBINARY MySQL: BINARY - JDBC: BINARY MySQL: LONG VARCHAR - JDBC: LONGVARCHAR MySQL: MEDIUMTEXT - JDBC: LONGVARCHAR MySQL: LONGTEXT - JDBC: LONGVARCHAR MySQL: TEXT - JDBC: LONGVARCHAR MySQL: TINYTEXT - JDBC: LONGVARCHAR MySQL: CHAR - JDBC: CHAR MySQL: NUMERIC - JDBC: NUMERIC MySQL: DECIMAL - JDBC: DECIMAL MySQL: INTEGER - JDBC: INTEGER MySQL: INTEGER UNSIGNED - JDBC: INTEGER MySQL: INT - JDBC: INTEGER MySQL: INT UNSIGNED - JDBC: INTEGER MySQL: MEDIUMINT - JDBC: INTEGER MySQL: MEDIUMINT UNSIGNED - JDBC: INTEGER MySQL: SMALLINT - JDBC: SMALLINT MySQL: SMALLINT UNSIGNED - JDBC: SMALLINT MySQL: FLOAT - JDBC: REAL MySQL: DOUBLE - JDBC: DOUBLE MySQL: DOUBLE PRECISION - JDBC: DOUBLE MySQL: REAL - JDBC: DOUBLE MySQL: VARCHAR - JDBC: VARCHAR MySQL: ENUM - JDBC: VARCHAR MySQL: SET - JDBC: VARCHAR MySQL: DATE - JDBC: DATE MySQL: TIME - JDBC: TIME MySQL: DATETIME - JDBC: TIMESTAMP MySQL: TIMESTAMP - JDBC: TIMESTAMP |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como detectar alterações no conteúdo de um JTextAreaQuantidade de visualizações: 9 vezes |
|
Nesta dica veremos como é possível escrever uma aplicação Java Swing que detecta quando o conteúdo de um controle JTextArea é alterado. Para isso nós vamos fazer a janela JFrame implementar a interface DocumentListener e fornecer comportamento para seus método insertUpdate(), removeUpdate() e changedUpdate(). O resultado do código é refletido na imagem abaixo: ![]() E agora o código Java Swing completo para o exemplo:
package arquivodecodigos;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class Estudos extends JFrame implements DocumentListener{
JTextArea textArea;
JLabel aviso;
public Estudos() {
super("Detectando alterações em um JTextArea");
Container c = getContentPane();
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
c.setLayout(layout);
textArea = new JTextArea(10, 20);
textArea.setLineWrap(true);
textArea.getDocument().addDocumentListener(this);
aviso = new JLabel("Aviso de alterações");
c.add(textArea);
c.add(aviso);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void insertUpdate(DocumentEvent e) {
aviso.setText("Aviso de Inserção: " + e.toString());
}
public void removeUpdate(DocumentEvent e) {
aviso.setText("Aviso de Remoção: " + e.toString());
}
public void changedUpdate(DocumentEvent e) {
// pode obter os dois anteriores aqui
// aviso.setText("Aviso de Alteração: " + e.toString());
}
}
|
JavaScript ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
JavaScript Avançado - Como escrever uma função JavaScript que aceita um número variável de argumentosQuantidade de visualizações: 8909 vezes |
|
Em algumas situações precisamos criar funções JavaScript que aceitam um número variável de argumentos, ou seja, queremos ser capazes de chamar a função e fornecer 0, 1, 2 ou mais argumentos. Nesta dica eu mostrarei como isso é possível. A técnica aqui é usar o objeto arguments, que representa os argumentos da função que está sendo executada no momento. Para saber a quantidade de argumentos fornecidos, só precisamos usar a propriedade length deste objeto. A partir daí um laço for nos permite acessar cada um dos argumentos fornecidos individualmente. Veja uma página HTML contendo uma função JavaScript que permite somar os valores fornecidos como argumentos. Note que podemos passar quantos valores quisermos para a função:
<html>
<head>
<title>Estudos JavaScript</title>
<script type="text/javascript">
function somar(){
var soma = 0;
// vamos percorrer os argumentos fornecidos
for(var i = 0; i < arguments.length; i++){
soma += arguments[i];
}
window.alert("A soma dos valores é: " + soma);
}
// vamos somar alguns valores
somar(3); // um argumento
somar(2, 8); // dois argumentos
somar(1, 2, 4, 4); // quatro argumentos
</script>
</head>
<body>
</body>
</html>
O objeto argumentos não pode ser criado explicitamente. Este objeto está disponível somente quando uma função inicia sua execução. O objeto arguments de uma função não é um array (matriz), mas os argumentos individuais podem ser acessados da mesma forma que os elementos de um array, ou seja, usando índices. O índice é, na verdade, uma referência a uma das propriedades 0...n do objeto arguments. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios |
Exercícios Resolvidos de Java - Um programa que recebe um caminho e nome de um arquivo e retorna apenas o caminho, sem o nome e extensão do arquivoQuantidade de visualizações: 8031 vezes |
|
Pergunta/Tarefa: Escreva um método Java que recebe um caminho e nome de arquivo na forma: "C:\temporario\Java\dica.txt" e retorne apenas o caminho do arquivo, sem o nome e extensão do arquivo. Assim, para o caminho acima, o retorno deve ser apenas: "C:\temporario\Java" Eis a assinatura do método a ser criado: public static String getCaminho(String caminho); Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package estudos;
import java.io.File;
public class Main {
public static void main(String[] args) {
// define um caminho e nome de arquivo
String caminho = "C:\\temporario\\Java\\dica.txt";
// vamos retornar apenas o caminho do arquivo, ou seja, retirar o
// nome do arquivo
String caminhoFinal = getCaminho(caminho);
// vamos mostrar o resultado
System.out.println("O caminho do arquivo é: " + caminhoFinal);
}
public static String getCaminho(String caminho){
// vamos obter o índice da última ocorrência do separador de caminho
int pos = caminho.lastIndexOf(File.separatorChar);
if (pos > -1) {
return caminho.substring(0, pos);
}
// por padrão vamos retornar uma string vazia
return "";
}
}
Uma variação deste exercício é a criação de um método que recebe o caminho e nome do arquivo e retorne apenas o nome do arquivo, seguido por sua extensão. |
VB.NET ::: Dicas & Truques ::: Strings e Caracteres |
Como obter uma substring em uma string VB.NET usando o método Substring() da classe StringQuantidade de visualizações: 12819 vezes |
|
Nesta dica mostrarei como podemos usar o método Substring() da classe String do VB.NET para retornar parte de uma palavra, frase ou texto, ou seja, uma substring em uma string. Este método recebe o índice do caractere inícial da substring a ser obtida e a quantidade total de caracteres. O retorno é uma nova string. Veja o código completo para o exemplo:
Imports System
Module Program
Sub Main(args As String())
Dim frase As String = "Gosto muito de VB.NET"
' vamos mostrar a frase original
Console.WriteLine("Frase original: " & frase)
' vamos obter a substring "VB.NET"
Dim substring As String = frase.Substring(15, 6)
' exibe o resultado
Console.WriteLine("A substring é: " & substring)
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executar este código VB.NET nós teremos o seguinte resultado: Frase original: Gosto muito de VB.NET A substring é: VB.NET |
Desafios, Exercícios e Algoritmos Resolvidos de VB.NET |
Veja mais Dicas e truques de VB.NET |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





