I followed a tutorial on the connection of Android Studio with SQL Server 2008 r2 (already existing), with which I could make the connection normally, but I have a problem. I can make the connection to the bank if the connection to the bank is successful (door access, internet ok, etc). If I do not get access to the database (access to the denied port or lack of internet on the server PC), the program goes into a black screen as if it were trying to connect to the bank and only after a while does it return an error. >
Look at the code I use:
Dao Connection
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;
}
}
}
Class where I search
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;
}
In this case, I click on a button that takes me to the results screen.
In case of a problem with the connection to the database, it gets processed as monitored in Android Studio (while it does not go through all the search, it does not return anything to me).
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
Follow 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();
}
}