Utilizar SQL Server en Android con jTDS

| 2013-12-6 | 1 Comentario »

sql-server-logo-411303Microsoft SQL Server es un sistema para la gestión de bases de datos producido por Microsoft basado en el modelo relacional. Sus lenguajes para consultas son T-SQL y ANSI SQL. Microsoft SQL Server constituye la alternativa de Microsoft a otros potentes sistemas gestores de bases de datos como son Oracle, PostgreSQL o MySQL.

IDE utilizado: Eclipse + ADT.

– Lo primero que se debe de hacer es agregar el jtds (.jar) al proyecto android deseado en la carpeta “libs”, posteriormente se debe hacer click derecho al proyecto y luego click izquierdo a la opción Refresh.

– Luego abrir desde el eclipse el archivo MainActivity.java que se encuentra en la carpeta src y dejarlo de esta manera:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnCancelListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

private Button ver;
 private ProgressDialog pDialog;
 private MiTareaAsincronaDialog tarea2;
 ArrayList nicks = new ArrayList<String>();

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

 ver = (Button)findViewById(R.id.ver);
 ver.setOnClickListener(new View.OnClickListener() {
 public void onClick(View v) {

 pDialog = new ProgressDialog(MainActivity.this);
 pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
 pDialog.setMessage("Procesando...");
 pDialog.setCancelable(true);
 pDialog.setMax(100);

 tarea2 = new MiTareaAsincronaDialog();
 tarea2.execute();

}
 });

 }

@Override
 public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu; this adds items to the action bar if it is present.
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }

 //Tarea Asincronona para sacar los puestos del ranking.
 private class MiTareaAsincronaDialog extends AsyncTask<Void, Integer, Boolean> {
 @Override
 protected Boolean doInBackground(Void... params) {
 try {
 Class.forName("net.sourceforge.jtds.jdbc.Driver");
 Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://IP:1433/DB", "USER", "PASSWORD");

 //En el stsql se puede agregar cualquier consulta SQL deseada.
 String stsql = "Select TOP 60 Name from Character";
 // String stsql = "SELECT @@VERSION";
 Statement st = conn.createStatement();
 ResultSet rs = st.executeQuery(stsql);
 // rs.next();
 //System.out.println(rs.getString(1));

 while(rs.next()){
 nicks.add(rs.getString("Name"));
 }
 //Cerramos la conexión
 conn.close();
 publishProgress(100);
 return true;

 } catch (SQLException se) {
 System.out.println("oops! No se puede conectar. Error: " + se.toString());
 } catch (ClassNotFoundException e) {
 System.out.println("oops! No se encuentra la clase. Error: " + e.getMessage());
 }
 return false;
 }

 @Override
 protected void onProgressUpdate(Integer... values) {
 int progreso = values[0].intValue();
 pDialog.setProgress(progreso);
 }

 @Override
 protected void onPreExecute() {

 pDialog.setOnCancelListener(new OnCancelListener() {
 @Override
 public void onCancel(DialogInterface dialog) {
 MiTareaAsincronaDialog.this.cancel(true);
 }
 });
 pDialog.setProgress(0);
 pDialog.show();
 }

 @Override
 protected void onPostExecute(Boolean result) {
 pDialog.dismiss();
 if(result)
 {
 //Enviamos los resultados a la segunda actividad
 Intent intent = new Intent(MainActivity.this, SecundaryActivity.class);
 intent.putExtra("nicks", nicks );
 startActivity(intent);
 }
 }

 @Override
 protected void onCancelled() {
 Toast.makeText(MainActivity.this, "Problema!", Toast.LENGTH_SHORT).show();
 }
 }
}

– Aclaración: Dicho ejemplo lo que hace es consultar a una DB, y el resultado lo transfiere a otra actividad, que toma eso y lo muestra.

– Posteriormente se debe de agregar el permiso para poder acceder  a una base de datos remota, para eso deben de agregar lo siguiente en el AndroidManifest.xml:

.
.
<uses-permission android:name="android.permission.INTERNET" />

</manifest>

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Crear múltiples productFlavors con Android Studio
  • Gson: Librería para parsear JSON en Android
  • Butter Knife: librería para inyectar vistas en Android
  • HTTPS y SSL en Android



SEGUÍNOS EN FACEBOOK


GITHUB