Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Ajuda com conexão ao banco de dados sql server 2008 e android

Rapaz, isso ocorre provavelmente porque você só finaliza o evento onCreate após finalizar a consulta no banco, e alguns erros de rede demoram a ser detectados (provavelmente porque ele espera dar timeout)...
Talvez seja mais interessante você colocar esse código em uma AsyncTask [0] (acho que seja esse o nome) e iniciar sua execução no onResume, assim você cria e exibe a tela normalmente e só depois executa essa tarefa demorada, além de fazer isso de forma assíncrona...

[0] e a alteração dos dados na tela você coloca no onPostExecute, se não me falha a memória.


Em 24 de junho de 2016 15:04, ronaldo santos <ronaldesantos@gmail.com> escreveu:

Fiz seguindo um tutorial a conexão do android studio com o sql server 2008 r2 ( já existente), o qual eu consegui fazer a conexão normalmente. só que estou com um problema, eu consigo fazer a conexão com o banco caso a conexão com o banco seja bem sucedida (aceso a porta, internet ok, etc). caso eu não consiga acesso ao banco (acesso a porta negada ou falta de internet no pc servidor) o programa entra em uma tela preta como se ficasse tentando conectar ao banco e só depois de um tempo ele me retorna um erro.

olha o codigo que eu uso


Conexão Dao

public class ConexaoDao {      @SuppressLint("NewApi")      public Connection dbConnect(ObjetoConexao objConexao) {          StrictMode.ThreadPolicy policy = new                  StrictMode.ThreadPolicy.Builder().permitAll().build();          StrictMode.setThreadPolicy(policy);          Connection conn = null;          String connectionUrl = null;          try {              Class.forName("net.sourceforge.jtds.jdbc.Driver");              connectionUrl = "jdbc:jtds:sqlserver://" +                      objConexao.db_connect_string + ";" +                      "databaseName=" + objConexao.db_name + ";user="                      + objConexao.db_userid +                      ";password=" + objConexao.db_password + ";";              conn = DriverManager.getConnection(connectionUrl);                  return conn;            }                  catch(ClassNotFoundException cnf){                  System.out.println ("Classe JDBC Driver nao encontrada.");                  return null;              }              catch(SQLException sql){                  System.out.println ("Erro ao se conectar com o banco de dados.");                      return null;              }              catch(Exception e){                  System.out.println (e.getMessage());                  return null;                }      }  }


classe onde faço a pesquisa

public class Dao_PcCampestre extends Context{            public String nomeTabela()  {            String nomeResTorres = "";          ConexaoDao conexao = new ConexaoDao();          ObjetoConexao objConexao = new ObjetoConexao();          objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";          objConexao.db_name = "Barbacena2";          objConexao.db_userid = "sa";          objConexao.db_password = "flextelecom";          Connection conn = conexao.dbConnect(objConexao);                if (conn == null) {                nomeResTorres = "Não foi possivel se conectar ao banco de dados";                } else if (conn != null) try {              Statement statement = conn.createStatement();              String queryString = "select TOP 1 Area ,Source,Message from Alarmes Where AREA = 'POÇO CAMPESTRE' AND Source ='xo_Alarmes.Falta_Energia'  order By E3TimeStamp DESC ";              ResultSet rs;                rs = statement.executeQuery(queryString);                if (rs.next()) {                    nomeResTorres = rs.getString("Message");                    }                rs.close();              } catch (SQLException e) {                    System.out.println (e.getMessage());              return null;                }              return nomeResTorres;        }              public String nomeTabela2()  {          String nomeResTorres2 = "";          ConexaoDao conexao = new ConexaoDao();          ObjetoConexao objConexao = new ObjetoConexao();          objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";          objConexao.db_name = "Barbacena2";          objConexao.db_userid = "sa";          objConexao.db_password = "flextelecom";          Connection conn = conexao.dbConnect(objConexao);              if (conn == null)  {                nomeResTorres2 = "Não foi possivel se conectar ao banco de dados";                return ""+ nomeResTorres2;            }else if (conn != null) try {              Statement statement = conn.createStatement();              String queryString = "select TOP 1 Code from Tbl_Comunicacao_Pc_Campestre where Situacao = 'Recepção (RX) - Aguardando' or Situacao =  'Recepção (RX) - OK' or Situacao =  'Recepção (RX) - Erro'   order By E3TimeStamp DESC ";              ResultSet rs;                rs = statement.executeQuery(queryString);                  if (rs.next()) {                    nomeResTorres2 = rs.getString("Code");                    if (nomeResTorres2.equals("255")) {                        nomeResTorres2 = "Aguardando Recepção";                      } else if (nomeResTorres2.equals("0")) {                        nomeResTorres2 = "Recepção OK";                      } else if (nomeResTorres2.equals("4")) {                        nomeResTorres2 = "Recepção OK";                      } else if (nomeResTorres2.equals("1")) {                        nomeResTorres2 = "Falha na Recepção";                      }                    rs.close();              }          } catch (SQLException e) {                  System.out.println (e.getMessage());              return null;          }          return ""+ nomeResTorres2;          }          public String nomeTabela3()  {          String nomeResTorres3 = "";          ConexaoDao conexao = new ConexaoDao();          ObjetoConexao objConexao = new ObjetoConexao();          objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";          objConexao.db_name = "Barbacena2";          objConexao.db_userid = "sa";          objConexao.db_password = "flextelecom";          Connection conn = conexao.dbConnect(objConexao);                if (conn == null)  {                nomeResTorres3 = "Não foi possivel se conectar ao banco de dados";                return  ""+ nomeResTorres3;            }else  if (conn != null) try {              Statement statement = conn.createStatement();              String queryString = "select TOP 1 Area,Source,Message from Alarmes Where AREA = 'POÇO CAMPESTRE' AND Source ='xo_Alarmes.Presenca'  order By E3TimeStamp DESC ";              ResultSet rs;                rs = statement.executeQuery(queryString);                    if (rs.next()) {                    nomeResTorres3 = rs.getString("Message");              }                rs.close();            } catch (SQLException e) {                System.out.println (e.getMessage());              return null;            }          return ""+ nomeResTorres3;          }              public String nomeTabela5() {          String nomeResTorres5 = "";          ConexaoDao conexao = new ConexaoDao();          ObjetoConexao objConexao = new ObjetoConexao();          objConexao.db_connect_string = "ronaldesantos.hopto.org:1433";          objConexao.db_name = "Barbacena2";          objConexao.db_userid = "sa";          objConexao.db_password = "flextelecom";          Connection conn = conexao.dbConnect(objConexao);                  if (conn == null)  {                nomeResTorres5 = "Não foi possivel se conectar ao banco de dados";                return "" + nomeResTorres5;            }       else if (conn != null) try {              Statement statement = conn.createStatement();              String queryString = "select TOP 1 Area ,Source,Message from Alarmes Where AREA = 'POÇO CAMPESTRE' AND Source ='xo_Alarmes.Sobrecarga'  order By E3TimeStamp DESC ";              ResultSet rs;                rs = statement.executeQuery(queryString);                  if (rs.next()) {                    nomeResTorres5 = rs.getString("Message");                    }                rs.close();            } catch (SQLException e) {                    System.out.println (e.getMessage());              return null;            }          return "" + nomeResTorres5;        }        public String nomeTabela6() {          String nomeResTorres6 = "";          ConexaoDao conexao = new ConexaoDao();          ObjetoConexao objConexao = new ObjetoConexao();          objConexao.db_connect_string = "flexsas.hopto.org:1433";          objConexao.db_name = "Barbacena2";          objConexao.db_userid = "sa";          objConexao.db_password = "flextelecom";          Connection conn = conexao.dbConnect(objConexao);              if (conn == null)  {                nomeResTorres6 = "Não foi possivel se conectar ao banco de dados";                return "" + nomeResTorres6;            }else     if (conn != null) {              try {                  Statement statement = conn.createStatement();                  String queryString = "select TOP 1 Estado  from Tbl_Acionamentos_Pc_Campestre  order By E3TimeStamp DESC ";                  ResultSet rs;                    rs = statement.executeQuery(queryString);                      if (rs.next()) {                        nomeResTorres6 = rs.getString("Estado");                  }                      rs.close();                } catch (SQLException e) {                        System.out.println (e.getMessage());                  return null;                      }          }          return "" + nomeResTorres6;        }


o Main

public class Act_Poco_Campestre extends AppCompatActivity implements View.OnClickListener {        private Button btnFechar;      private TextView tvNomeComunicacao;      private ImageView ImgSinal;      private ImageView ImgStatus;      private TextView tvNomeStatus;      private TextView tvNomePresenca;      private ImageView ImgPresenca;      private TextView tvNomeFalha;      private ImageView Imgfalha;      private TextView tvNomeEnergia;      private ImageView ImgEnergia;          String Aguardanando = "Aguardando Recepção";      String Recepcao = "Recepção OK";      String Falha = "Falha na Recepção";      String PresencaAc = "Sensor Invasão Atuado";      String PresencaN = "Sensor Invasão Desarmado";      String FalhaAc = "Sobrecarga Motor";      String FalhaN = "Rearme Sobrecarga";      String StatusAc = "Ligado";      String StatusN = "Desligado";      String EnergiaAc = "Falta Enegia Eletrica";      String EnergiaN = "Enegia Eletrica Restabelecida";      String FalhaCon = "Não foi possivel se conectar ao banco de dados";          @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.act__poco__campestre);              btnFechar = (Button) findViewById(R.id.btnFechar);          btnFechar.setOnClickListener(this);          tvNomeComunicacao = (TextView) findViewById(R.id.tvNomeComunicacao);          ImgSinal = (ImageView) findViewById(R.id.ImgSinal);          ImgStatus = (ImageView) findViewById(R.id.ImgStatus);          ImgPresenca = (ImageView) findViewById(R.id.ImgPresenca);          tvNomePresenca = (TextView) findViewById(R.id.tvNomePresenca);          Imgfalha = (ImageView) findViewById(R.id.ImgFalha);          tvNomeFalha = (TextView) findViewById(R.id.tvNomeFalha);          tvNomeStatus = (TextView) findViewById(R.id.tvNomeEstado);          ImgEnergia = (ImageView) findViewById(R.id.ImgEnergia);          tvNomeEnergia = (TextView) findViewById(R.id.tvNomeEnergia);          Dao_PcCampestre  dao_pcCampestre1= new Dao_PcCampestre();          Dao_PcCampestre  dao_pcCampestre2= new Dao_PcCampestre();          Dao_PcCampestre  dao_pcCampestre3= new Dao_PcCampestre();          Dao_PcCampestre  dao_pcCampestre4= new Dao_PcCampestre();          Dao_PcCampestre  dao_pcCampestre5= new Dao_PcCampestre();              String nomeEnergia = dao_pcCampestre1.nomeTabela();          String nomeComunicacao = dao_pcCampestre2.nomeTabela2();          String nomePresenca = dao_pcCampestre3.nomeTabela3();          String nomeFalha = dao_pcCampestre4.nomeTabela5();          String nomeAcionamento = dao_pcCampestre5.nomeTabela6();            if (nomeComunicacao.equals(Aguardanando)) {                tvNomeComunicacao.setTextColor(Color.parseColor("#FFFEED04"));              tvNomeComunicacao.setText("" + "Aguardando Recepção");              ImgSinal.setImageResource(R.drawable.samarelo);              } else if (nomeComunicacao.equals(Recepcao)) {                tvNomeComunicacao.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeComunicacao.setText("" + " Recepção OK");              ImgSinal.setImageResource(R.drawable.sverde);            } else if (nomeComunicacao.equals(Falha)) {                tvNomeComunicacao.setTextColor(Color.parseColor("#FFFC120E"));              tvNomeComunicacao.setText("" + "Falha na Recepção");              ImgSinal.setImageResource(R.drawable.svermelho);              } else if (nomeComunicacao.equals(FalhaCon)){                tvNomeComunicacao.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeComunicacao.setText("" + " Não foi possivel se conectar ao banco de dados");              }            if (nomePresenca.equals(PresencaN)) {                tvNomePresenca.setTextColor(Color.parseColor("#FF60FB07"));              tvNomePresenca.setText("" + " Sensor Invasão Desarmado");              ImgPresenca.setImageResource(R.drawable.presencaon);            } else if (nomePresenca.equals(PresencaAc)) {                tvNomePresenca.setTextColor(Color.parseColor("#FFFC120E"));              tvNomePresenca.setText("" + "Sensor Invasão Atuado");              ImgPresenca.setImageResource(R.drawable.presenca);          } else if (nomePresenca.equals(FalhaCon)) {                tvNomePresenca.setTextColor(Color.parseColor("#FF60FB07"));              tvNomePresenca.setText("" + " Não foi possivel se conectar ao banco de dados");            } else if (nomePresenca.isEmpty()) {                tvNomePresenca.setTextColor(Color.parseColor("#FF60FB07"));              tvNomePresenca.setText("" + " Sensor Invasão Desarmado");              ImgPresenca.setImageResource(R.drawable.presencaon);            }            if (nomeFalha.equals(FalhaN)){                tvNomeFalha.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeFalha.setText("" + " Rearme Falha");            } else if (nomeFalha.equals(FalhaAc)) {                tvNomeFalha.setTextColor(Color.parseColor("#FFFC120E"));              tvNomeFalha.setText("" + "Falha Motor");              Imgfalha.setImageResource(R.drawable.falhaon);              }else if (nomeFalha.equals(FalhaCon)){                tvNomeFalha.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeFalha.setText("" + " Não foi possivel se conectar ao banco de dados");              }else if (nomeFalha.isEmpty()){                tvNomeFalha.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeFalha.setText("" + " Rearme Falha");          }              if (nomeEnergia.equals(EnergiaN)){                tvNomeEnergia.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeEnergia.setText("" + " Enegia Eletrica Ok");              ImgEnergia.setImageResource(R.drawable.energiaon);            } else if (nomeEnergia.equals(EnergiaAc)) {                tvNomeEnergia.setTextColor(Color.parseColor("#FFFC120E"));              tvNomeEnergia.setText("" + "Falta Enegia Eletrica");              ImgEnergia.setImageResource(R.drawable.energiaoff);            } else if (nomeEnergia.equals(FalhaCon)){                    tvNomeEnergia.setTextColor(Color.parseColor("#FF60FB07"));                  tvNomeEnergia.setText("" + " Não foi possivel se conectar ao banco de dados");            } else if (nomeEnergia.isEmpty()){                tvNomeEnergia.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeEnergia.setText("" + " Enegia Eletrica OK");              ImgEnergia.setImageResource(R.drawable.energiaon);          }              if (nomeAcionamento.equals(StatusN)){                tvNomeStatus.setTextColor(Color.parseColor("#FFFC120E"));              tvNomeStatus.setText("" + " Poço Desligado");              ImgStatus.setImageResource(R.drawable.pocooff);            } else if (nomeAcionamento.equals(StatusAc)) {                tvNomeStatus.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeStatus.setText("" + "Poço Ligado");              ImgStatus.setImageResource(R.drawable.pocon);              } else if (nomeAcionamento.equals(FalhaCon)){                tvNomeStatus.setTextColor(Color.parseColor("#FF60FB07"));              tvNomeStatus.setText("" + " Não foi possivel se conectar ao banco de dados");            } else if (nomeAcionamento.isEmpty()){                tvNomeStatus.setTextColor(Color.parseColor("#FFFC120E"));              tvNomeStatus.setText("" + " Poço Desligado");              ImgStatus.setImageResource(R.drawable.pocooff);          }            }              @Override      public void onClick (View v){          finish();      }  }

neste caso clico em um botão que me leva a tela de resultados.

caso problema com a conexão ao banco ( o pc onde está o servidor esta desligado ou sem internet), ele fica em processamento conforme o monitoramento no android studio ( enquanto ele não percorre todas as pesquisa não me retorna nada

06-22 12:00:40.373 2371-2377/br.com.flextelecom.barbacena W/art: Suspending all threads took: 16.647ms  06-22 12:01:09.469 2371-2382/br.com.flextelecom.barbacena W/art: Suspending all threads took: 6.838ms  06-22 12:01:09.476 2371-2382/br.com.flextelecom.barbacena I/art: Background sticky concurrent mark sweep GC freed 7371(946KB) AllocSpace objects, 1(16KB) LOS objects, 23% free, 3MB/4MB, paused 10.003ms total 25.924ms  06-22 12:03:17.195 2371-2371/br.com.flextelecom.barbacena I/System.out: Erro ao se conectar com o banco de dados.  06-22 12:05:24.874 2371-2371/br.com.flextelecom.barbacena I/System.out: Erro ao se conectar com o banco de dados.  06-22 12:07:32.395 2371-2371/br.com.flextelecom.barbacena I/System.out: Erro ao se conectar com o banco de dados.  06-22 12:09:39.913 2371-2371/br.com.flextelecom.barbacena I/System.out: Erro ao se conectar com o banco de dados.  06-22 12:11:47.433 2371-2371/br.com.flextelecom.barbacena I/System.out: Erro ao se conectar com o banco de dados.  06-22 12:11:47.453 2371-2371/br.com.flextelecom.barbacena I/Choreographer: Skipped 38296 frames!  The application may be doing too much work on its main thread.  06-22 12:11:47.510 2371-2609/br.com.flextelecom.barbacena W/EGL_emulation: eglSurfaceAttrib not implemented  06-22 12:11:47.510 2371-2609/br.com.flextelecom.barbacena W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f5184c0abc0, error=EGL_SUCCESS

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Eldio Santos Junior
Tel.: (21) 98884-3757
Skype: eldiojr
Twitter: @eldius
Página pessoal: http://eldiosantos.net
                        http://eldiosantos.net/sobre/ 
Email/GTalk: eldiosantos@gmail.com

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário