Problema com sql

6 respostas
caiozanchetti

galera,
tem o seguinte, quero fazer uma consulta a um banco usando jdbc/odbc só que não tem jeito da query que passo funcionar… tentei passa-la em modo texto, data… nao funciona… O erro está abaixo do codigo:

...
            Statement st = con.createStatement();
            ResultSet res = st.executeQuery("Select * from Pessoa where data_nasc='" +  ??????  + "'"); //Aqui vai a data
            }
...

O erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
	at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
	at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
	at exportacao.ExportaCps.<init>(ExportaCps.java:26)
	at exportacao.ExportaCps.main(ExportaCps.java:146)

6 Respostas

Pedrosa

Use PreparedStatement, é a melhor maneira, vc nunca mais se preocupara com aspas.

strSQL ="Select * from Pessoa where data_nasc = ? ";
PreparedStatement stmt = this.connection.prepareStatement(strSQL);
stmt.setSring(1, data);
ResultSet rs = stmt.executeQuery();
caiozanchetti

Show de bola!
Kra to usando tanto o hibernate que eu nem me lembrava que existia o preparedstatement… e lembro de te-lo usado e achado bom o que é melhor…

vlw obrigado mesmo…

T

para esse caso especifico, normalmente eh melhor usar o setDate () ao inves do setString… (a menos, eh claro, que o campo seja, no banco, do tipo String)

Essantos

Obrigado tive o mesmo problema e resolvi assim

renanpto

caiozanchetti:
galera,
tem o seguinte, quero fazer uma consulta a um banco usando jdbc/odbc só que não tem jeito da query que passo funcionar… tentei passa-la em modo texto, data… nao funciona… O erro está abaixo do codigo:

...
            Statement st = con.createStatement();
            ResultSet res = st.executeQuery("Select * from Pessoa where data_nasc='" +  ??????  + "'"); //Aqui vai a data
            }
...

O erro:

java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
	at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
	at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
	at exportacao.ExportaCps.<init>(ExportaCps.java:26)
	at exportacao.ExportaCps.main(ExportaCps.java:146)


Da forma como está fazendo, a string teria que conter a data no padrão esperado pelo banco. Teoricamente deveria funcionar.

Mas, como já sugerido, o mais correto é fazer o uso de PreparedStatement =D.

T

Pessoal boa tarde!

Estou mexendo em um código php que não foi desenvolvido por mim. A ideia é que ele percorre o BD lista os elementos em uma tabela. Quando um usuário clica em um elemento da tabela ele coloca o elemento clicado como o 1º elemento da tabela e o restante dos itens ficam em suas possições normais. O problema é que ao clicar nesse item toda a combinação do mysql_fetch_array não estão funcionando. Se coloco fora o if, funfa. Se entra no if, não funfa. Alguém pode me ajudar?
Segue um trecho do código:

<?php
			if ((!isset($_REQUEST["ordem"]))||($_REQUEST["ordem"]==""))
                    $_REQUEST["ordem"] = "nm_exame";
                    
                $_REQUEST["especialidade"] = "0";
				
				$sql = "select chave,nm_exame,cd_exame,mn_material,nm_sinonimo from tbl_exame_exame";
				if (isset($_REQUEST["cd_intervencao"])) $sql .= " and chave <> '".$_REQUEST["cd_intervencao"]."' ";
				$sql .= " order by ".$_REQUEST["ordem"]."";
                $qry = mysql_query($sql,$con);
                    ?>    
                    <div class="janela_grid" style="height: 365px;">
                        <table class="janela_grid_tabela" width="100%" cellspacing="0">
                            <tr class="janela_grid_tabela_titulo">
                                <td>Nome do Exame</td>
                                <td>Código</td>
                                <td>Material</td>
                                <td>Sinônimo</td>
                            </tr>                        
                            <?php
                                $classe = "janela_grid_tabela_linha1";
                                if (isset($_REQUEST["cd_intervencao"])) //Só entra neste if quando clica em um elemento da tabela.
                                {	
									$sql2 = "select chave,nm_exame,cd_exame,mn_material,nm_sinonimo from tbl_exame_exame";
                                    if (isset($_REQUEST["cd_intervencao"])) $sql2 .= " and chave = '".$_REQUEST["cd_intervencao"]."' ";
                                    $sql2 .= " order by ".$_REQUEST["ordem"]."";
                                    $qry2 = mysql_query($sql2,$con);
									
                                    if ((isset($_REQUEST["cd_intervencao"]))&&($_REQUEST["cd_intervencao"]==$res["chave"]))
                                    {
                                        $classe = "janela_grid_tabela_linhaselecionada";
                                        $complemento_link = "&alteraintervencao=";
                                        if (isset($_REQUEST["ordem"])) $complemento_link .= "&ordem=".$_REQUEST["ordem"];
                                    }
                                    else
                                    {
                                        $complemento_link = "";
                                        if (isset($_REQUEST["ordem"])) $complemento_link .= "&ordem=".$_REQUEST["ordem"];
                                    }
                                    if ($res["excluido"]!="")
                                    {
                                        $color = "red";
                                    }
                                    else
                                    {
                                        $color = "";
                                    }

                                    ?>
                                    <tr class="<?php echo $classe; ?>">
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo 'BB'.$res["nm_exame"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo 'BB'.$res["cd_exame"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo 'BB'.$res["mn_material"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo 'BB'.$res["nm_sinonimo"]; ?>
                                            </a>
                                        </td>

                                    </tr>                    
                                    <?php
                                    if ($classe == "janela_grid_tabela_linha1")
                                        $classe = "janela_grid_tabela_linha2";
                                    else
                                        $classe = "janela_grid_tabela_linha1";                                      
                                    
                                }

                                while ($res = mysql_fetch_array($qry))
                                {	//se clicar em um exame entra no if
                                    if ((isset($_REQUEST["cd_intervencao"]))&&($_REQUEST["cd_intervencao"]==$res["chave"]))
                                    {
									 
                                        $classe = "janela_grid_tabela_linhaselecionada";
                                        $complemento_link = "&alteraintervencao=".$res["chave"];
                                        if (isset($_REQUEST["ordem"])) $complemento_link .= "&ordem=".$_REQUEST["ordem"];
                                    }
                                    else
                                    {
                                        $complemento_link = "";
                                        if (isset($_REQUEST["ordem"])) $complemento_link .= "&ordem=".$_REQUEST["ordem"];
                                    }
                                    if ($res["excluido"]!="")
                                    {
                                        $color = "red";
                                    }
                                    else
                                    {
                                        $color = "";
                                    }									
									?>
                                    <tr class="<?php echo $classe; ?>">
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo $res["nm_exame"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo $res["cd_exame"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo $res["mn_material"]; ?>
                                            </a>
                                        </td>
                                        <td>
                                            <a href="configuracao_tabelas_intervencoes.php?cd_tabela_selecionada=<?php echo $cd_tabela_selecionada; ?>&ordem=<?php echo $_REQUEST["ordem"] ?>&especialidade=<?php echo $_REQUEST["especialidade"] ?>&cd_intervencao=<?php echo $res["chave"].$complemento_link; ?>" class="janela_grid_link" style="color: <?php echo $color ?>;">
                                                <?php echo $res["nm_sinonimo"]; ?>
                                            </a>
                                        </td>
                                    </tr>                    
                                    <?php
                                    if ($classe == "janela_grid_tabela_linha1")
                                        $classe = "janela_grid_tabela_linha2";
                                    else
                                        $classe = "janela_grid_tabela_linha1";
                                }
                            ?>
                        </table>
                    </div>
Criado 29 de março de 2006
Ultima resposta 12 de dez. de 2013
Respostas 6
Participantes 6