Android studio połączenie aplikacji z serwerem Oracle SQL

0

Witam,
Mam następujący problem:
Mam sobie serwer Oracle SQL i dane do niego:
serwer: xxx-xx-xx-xxx
port: xxxx
SID: xe
W Oracle SQL Developer stworzyłem sobie nowe "Connection"
title
Zalogowałem się na nie podając odpowiedni:
username oraz password
Następnie załadowałem skrypt bazy danych i użyłem w celu sprawdzenia zapytania:

Select FNAME from author;

Wszystko działa wypisało mi:
title
Chciałbym teraz używać tego serwera bazodanowego w mojej aplikacji stworzonej w Android Studio.
W tym celu na podstawie znalezionych tutoriali stworzyłem klasę:

package com.example.spand.krishnasoftwares;

import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class ConnectionClass {
    String ip = "TU WPISALEM IP";
    String classs = "net.sourceforge.jtds.jdbc.Driver";
    String db = "TU WPISALE TO NAZWE NA KTORA SIE LACZYLEM W ORACLE SQL DEVELOPER";
    String un = "TU WPISALEM NAZWE UZYTKOWNIKA";
    String password = "TU WPISALEM HASLO";


    @SuppressLint("NewApi")
    public Connection CONN() {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Connection conn = null;
        String ConnURL = null;
        try {

            Class.forName(classs);
            ConnURL = "jdbc:jtds:sqlserver://" + ip + ";"
                    + "databaseName=" + db + ";user=" + un + ";password="
                    + password + ";";
            conn = DriverManager.getConnection(ConnURL);
        } catch (SQLException se) {
            Log.e("ERRO", se.getMessage());
        } catch (ClassNotFoundException e) {
            Log.e("ERRO", e.getMessage());
        } catch (Exception e) {
            Log.e("ERRO", e.getMessage());
        }
        return conn;
    }
}

oraz klasę MainActivity:

package com.example.spand.krishnasoftwares;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class MainActivity extends Activity
{
    ConnectionClass connectionClass;
    EditText edtuserid,edtpass;
    Button btnlogin;
    ProgressBar pbbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        connectionClass = new ConnectionClass();
        edtuserid = (EditText) findViewById(R.id.et_username);
        edtpass = (EditText) findViewById(R.id.et_password);
        btnlogin = (Button) findViewById(R.id.btn_Login);
        pbbar = (ProgressBar) findViewById(R.id.pbbar);
        pbbar.setVisibility(View.GONE);

        btnlogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DoLogin  doLogin = new DoLogin();
                doLogin.execute("");

            }
        });

    }


    public class DoLogin extends AsyncTask<String,String,String>
    {
        String z = "";
        Boolean isSuccess = false;


        String userid = edtuserid.getText().toString();
        String password = edtpass.getText().toString();


        @Override
        protected void onPreExecute() {
            pbbar.setVisibility(View.VISIBLE);
        }

        @Override
        protected void onPostExecute(String r) {
            pbbar.setVisibility(View.GONE);
            Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show();

            if(isSuccess) {
                Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show();
            }

        }

        @Override
        protected String doInBackground(String... params) {
            if(userid.trim().equals("")|| password.trim().equals(""))
                z = "Please enter User Id and Password";
            else
            {
                try {
                    Connection con = connectionClass.CONN();
                    if (con == null) {
                        z = "Error in connection with SQL server";
                    } else {
                        String query = "select FNAME from author";
                        Statement stmt = con.createStatement();
                        ResultSet rs = stmt.executeQuery(query);

                        if(rs.next())
                        {

                            z = "Login successfull";
                            isSuccess=true;
                        }
                        else
                        {
                            z = "Invalid Credentials";
                            isSuccess = false;
                        }

                    }
                }
                catch (Exception ex)
                {
                    isSuccess = false;
                    z = "Exceptions";
                }
            }
            return z;
        }
    }
}

Po uruchomieniu aplikacji i wpisaniu loginu oraz hasła, nic się nie dzieje, ciągle mi ładuje - w sensie wyskakuje mi grafika buforowania... Pierwszy raz próbuję napisać aplikację w Android Studio, która ma łączyć się z serwerem Oracle SQL i nie mogę wszystkiego zrozumieć "co z czym", ktoś jest w stanie pomóc gdzie jest błąd? Jak to zrobić?

1

Na pewno nie łącz się z zewnątrzą baza danych bezpośrednio! Jak już to tylko REST API
http://chapmanworld.com/2015/07/02/why-you-shouldnt-connect-your-mobile-application-to-a-database/

0

szczerze wątpię w to, że android potrafi się połączyć bezpośrednio do oracle

1 użytkowników online, w tym zalogowanych: 0, gości: 1