<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paulo Canedo &#187; banco de dados</title>
	<atom:link href="http://www.paulocanedo.com.br/category/banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulocanedo.com.br</link>
	<description>Blog pessoal - TI, Java, NetBeans e Programação em geral</description>
	<lastBuildDate>Wed, 26 May 2010 16:30:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Acesso simples e rápido às linhas de uma query</title>
		<link>http://www.paulocanedo.com.br/2009/07/31/acesso-simples-e-rapido-as-linhas-de-uma-query/</link>
		<comments>http://www.paulocanedo.com.br/2009/07/31/acesso-simples-e-rapido-as-linhas-de-uma-query/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 17:42:11 +0000</pubDate>
		<dc:creator>Paulo Canedo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[dbquery]]></category>
		<category><![CDATA[jdbc]]></category>

		<guid isPermaLink="false">http://www.paulocanedo.com.br/?p=172</guid>
		<description><![CDATA[Abaixo segue duas classes para encapsular e facilitar o acesso a banco de dados via JDBC, a classe DBQuery encapsula uma query onde a mesma é capaz de gerar um iterator para navegação nas linhas da consulta de forma rápida, leve e eficiente. O iterator é implementado de uma forma em que ele não guarde [...]]]></description>
			<content:encoded><![CDATA[<p>Abaixo segue duas classes para encapsular e facilitar o acesso a banco de dados via JDBC, a classe DBQuery encapsula uma query onde a mesma é capaz de gerar um iterator para navegação nas linhas da consulta de forma rápida, leve e eficiente.</p>
<p>O iterator é implementado de uma forma em que ele não guarde os dados da consulta em memória, possibilitando o uso dessa classe para queries que retornem muitas linhas de resultado.</p>
<p>Outra coisa interessante é a possibilidade de se trabalhar com genéricos, caso sua consulta ao banco retorne um tipo homogêneo de dados (por exemplo, todos os campos sejam do tipo String).</p>
<p><strong>classe DBQuery.java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 *
 * @author Paulo Canedo C Rodrigues
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DBQuery<span style="color: #339933;">&lt;</span>T<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">implements</span> Iterable<span style="color: #339933;">&lt;</span>T<span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Connection</span> connection<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> query<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> DBQuery<span style="color: #009900;">&#40;</span><span style="color: #003399;">Connection</span> connection, <span style="color: #003399;">String</span> query<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">connection</span> <span style="color: #339933;">=</span> connection<span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">query</span> <span style="color: #339933;">=</span> query<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Iterator<span style="color: #339933;">&lt;</span>T<span style="color: #339933;">&gt;</span> iterator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">Statement</span> stm <span style="color: #339933;">=</span> connection.<span style="color: #006633;">createStatement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003399;">ResultSet</span> rs <span style="color: #339933;">=</span> stm.<span style="color: #006633;">executeQuery</span><span style="color: #009900;">&#40;</span>query<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> DBRowIterator<span style="color: #009900;">&#40;</span>rs<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">SQLException</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>classe DBRowIterator.java</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 *
 * @author Paulo Canedo C Rodrigues
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DBRowIterator<span style="color: #339933;">&lt;</span>T<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">implements</span> Iterator<span style="color: #339933;">&lt;</span>Map<span style="color: #339933;">&lt;</span>String, T<span style="color: #339933;">&gt;&gt;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">ResultSet</span> rs<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> Map<span style="color: #339933;">&lt;</span>String, T<span style="color: #339933;">&gt;</span> rowFields <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HashMap<span style="color: #339933;">&lt;</span>String, T<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">//Sobrescrita do metodo get do mapa para transformar o get em case insensitive</span>
        @Override
        <span style="color: #000000; font-weight: bold;">public</span> T get<span style="color: #009900;">&#40;</span><span style="color: #003399;">Object</span> key<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#41;</span> key<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> columnsName<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> objectReaded <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">int</span> columnCount<span style="color: #339933;">;</span>
&nbsp;
    DBRowIterator<span style="color: #009900;">&#40;</span><span style="color: #003399;">ResultSet</span> rs<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">SQLException</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">rs</span> <span style="color: #339933;">=</span> rs<span style="color: #339933;">;</span>
&nbsp;
        columnCount <span style="color: #339933;">=</span> rs.<span style="color: #006633;">getMetaData</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getColumnCount</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        columnsName <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span>columnCount<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> columnCount<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            columnsName<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> rs.<span style="color: #006633;">getMetaData</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getColumnName</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toUpperCase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> hasNext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>objectReaded <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">false</span> <span style="color: #339933;">&amp;&amp;</span> rowFields.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">boolean</span> flag <span style="color: #339933;">=</span> rs.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>flag <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                rowFields.<span style="color: #006633;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> columnCount<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #003399;">Object</span> o <span style="color: #339933;">=</span> rs.<span style="color: #006633;">getObject</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    rowFields.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>columnsName<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>, <span style="color: #009900;">&#40;</span>T<span style="color: #009900;">&#41;</span> o<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>rowFields <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
                        rs.<span style="color: #006633;">getStatement</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        rs.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
                rowFields <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000000; font-weight: bold;">return</span> flag<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Map<span style="color: #339933;">&lt;</span>String, T<span style="color: #339933;">&gt;</span> next<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        objectReaded <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> rowFields<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> remove<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><em>Abaixo segue dois exemplos de utilização, por favor, deixem comentário sobre o que achou das classes e da ideia.</em></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">java.<span style="color: #006633;">sql</span>.<span style="color: #003399;">Connection</span> connection <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Exemplo 1 com genérico sem casting - apenas para tipo de dados homogêneos</span>
DBQuery dbQuery1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DBQuery<span style="color: #009900;">&#40;</span>connection, <span style="color: #0000ff;">&quot;SELECT nome, sobrenome, endereco FROM tb_agenda ORDER BY nome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Iterator<span style="color: #339933;">&lt;</span>Map<span style="color: #339933;">&lt;</span>String, String<span style="color: #339933;">&gt;&gt;</span> it <span style="color: #339933;">=</span> dbQuery1.<span style="color: #006633;">iterator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> it.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Map<span style="color: #339933;">&lt;</span>String, String<span style="color: #339933;">&gt;</span> linhaDaConsulta <span style="color: #339933;">=</span> it.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">String</span> nome <span style="color: #339933;">=</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//nome do campo da consulta: case insensitive</span>
    <span style="color: #003399;">String</span> sobrenome <span style="color: #339933;">=</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sobrenome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">String</span> endereco <span style="color: #339933;">=</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;endereco&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span>.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Nome: %s; Sobrenome: %s; Endereço: %s&quot;</span>, nome, sobrenome, endereco<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Exemplo 2 sem genérico com casting</span>
DBQuery dbQuery2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DBQuery<span style="color: #009900;">&#40;</span>connection, <span style="color: #0000ff;">&quot;SELECT nome, idade, peso FROM tb_pessoa ORDER BY nome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Iterator<span style="color: #339933;">&lt;</span>Map<span style="color: #339933;">&lt;</span>String, Object<span style="color: #339933;">&gt;&gt;</span> it <span style="color: #339933;">=</span> dbQuery2.<span style="color: #006633;">iterator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> it.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Map<span style="color: #339933;">&lt;</span>String, Object<span style="color: #339933;">&gt;</span> linhaDaConsulta <span style="color: #339933;">=</span> it.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">String</span> nome <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#41;</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;nome&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">Integer</span> idade <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Integer</span><span style="color: #009900;">&#41;</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;idade&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">Float</span> peso <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Float</span><span style="color: #009900;">&#41;</span> linhaDaConsulta.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;peso&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span>.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Nome: %s; Idade: %d; Peso: %.2f&quot;</span>, nome, idade, peso<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.paulocanedo.com.br/2009/07/31/acesso-simples-e-rapido-as-linhas-de-uma-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando o banco Derby de forma portável</title>
		<link>http://www.paulocanedo.com.br/2009/04/02/utilizando-o-banco-derby-de-forma-portavel/</link>
		<comments>http://www.paulocanedo.com.br/2009/04/02/utilizando-o-banco-derby-de-forma-portavel/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 23:50:41 +0000</pubDate>
		<dc:creator>Paulo Canedo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[derby]]></category>
		<category><![CDATA[JavaDB]]></category>
		<category><![CDATA[SGBD Portável]]></category>

		<guid isPermaLink="false">http://www.paulocanedo.com.br/?p=108</guid>
		<description><![CDATA[Introdução Em algumas situações desenvolvemos aplicações de pequeno porte onde queremos utilizar um banco de dados, mas não temos interesse em instalar um SGBD em cada computador que for rodar minha aplicação. Um banco de dados que pode ser usado sem a necessidade de ser instalado é o Apache Derby (a Sun Microsystems utiliza esse [...]]]></description>
			<content:encoded><![CDATA[<h2>Introdução</h2>
<p>Em algumas situações desenvolvemos aplicações de pequeno porte onde queremos utilizar um banco de dados, mas não temos interesse em instalar um SGBD em cada computador que for rodar minha aplicação. Um banco de dados que pode ser usado sem a necessidade de ser instalado é o Apache Derby (a Sun Microsystems utiliza esse mesmo banco de dados com o nome de JavaDB, não sei ao certo a relação entre eles), que é implementado 100% em Java, o que se torna uma excelente opção para aplicações portáveis que utilizam banco de dados e são feitas em Java.</p>
<p>Existem duas formas de se acessar um banco de dados no derby, são elas:</p>
<p><strong>Conexão embarcada:</strong> realiza uma conexão diretamente no arquivo da base de dados, por esse motivo não é possível criar mais de uma conexão simultaneamente para a mesma base de dados.</p>
<p><strong>Conexão via serviço de rede:</strong> mesmo utilizando o SGBD derby como um banco portável é possível inicializar o serviço de rede sem realizar uma instalação, isso pode ser feito diretamente pelo código, ou pela linha de comando de um terminal, seja (L)unix ou windows.</p>
<h2>Requisitos</h2>
<p>Os requisitos aqui apresentados se referem a este post, nada impede criar uma aplicação em outra linguagem e utilizar um drive de conexão para o derby.</p>
<p>* Sua aplicação deve ser feita utilizando Java;<br />
* baixar o arquivo: db-derby-v.x.y.z-lib.zip<br />
- derby, derbyclient, derbynet, derbyrun: obrigatórios para executar sua aplicação<br />
- derbytools: jar para executar funções auxiliares do banco de dados, como por exemplo ver info do Derby<br />
- derby_LOCALE_LANGUAGE: adicione sua linguagem para sua aplicação para que o derby possa mostrar as mensagem traduzidas<br />
* Uma JVM instalada no computador cliente</p>
<h2>Iniciando o banco de dados derby</h2>
<p>Se você for utilizar a conexão embarcada não é necessário iniciar o Apache Derby, uma vez que esse modo não acessa via serviço. Caso contrário você pode iniciar o banco pela linha de comando, utilizando:<br />
<code><span style="color: #000080;">java -jar derbynet.jar start</span></code><br />
Quando você inicializar o banco pela linha de comando o derby automaticamente irá procurar pela variável de ambiente DERBY_HOME que indica a pasta onde ficam guardados as bases de dados a serem acessadas, no linux você pode definir essa variável através do comando export DERBY_HOME=/home/diretorio, pelo windows, pode-se definir essa variável através Propriedades do Sistema-&gt;Avançado-&gt;Variáveis de ambiente.</p>
<p>Se preferir, você pode inicializar o banco derby diretamente pelo código de sua aplicação derby, basta inserir as seguintes linhas de código na sua aplicação:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>0
1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//Aqui você também pode utilizar um caminho relativo, porém lembre-se de que esse</span>
<span style="color: #666666; font-style: italic;">//caminho inicia no mesmo diretório onde você iniciou a aplicação.</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;derby.system.home&quot;</span>, <span style="color: #0000ff;">&quot;/home/usuario/derby&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
NetworkServerControlImpl networkServer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> NetworkServerControlImpl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
networkServer.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">PrintWriter</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Conectado ao banco de dados.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Não conseguiu conectar no banco de dados.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Lembre-se de adicionar ao classpath os arquivos jar necessários para sua aplicação.</p>
<p>Caso a variável de ambiente DERBY_HOME não esteja definida (vale tanto para a inicialização via código quanto para a inicialização via terminal) o derby irá procurar automaticamente por base de dados localizadas na pasta de onde você iniciou a aplicação ou executou o comando de iniciar o derby.</p>
<h2>Links</h2>
<p>Site oficial: http://db.apache.org/derby/<br />
Manual: http://db.apache.org/derby/manuals/index.html<br />
Download: http://db.apache.org/derby/derby_downloads.html#Latest+Official+Release</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulocanedo.com.br/2009/04/02/utilizando-o-banco-derby-de-forma-portavel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
