Posición: Newbie
Grupos: Registered
Registrado: 14/01/2015(UTC) Mensajes: 5 Ubicación: Venezuela
Agradecimientos: 1 veces Fue agradecido: 1 vez/veces in 1 publicación(es).
|
Buenas muchas gracias por tu respuesta, ahora bien he seguido los pasos de los tutoriales para el manejo de la base de datos, la idea es mostrar un registro aleatorio he creado dos clases, una llamada DataBaseHelper cuyo codigo es el siguiente: Citar:import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;
import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.SQLDataException; import java.sql.SQLException;
public class DataBaseHelper extends SQLiteOpenHelper { public static String DB_PATH = "/data/data/com.promesas.corpoeureka.promesas/databases/"; public static String DB_NAME = "palabras.sqlite"; private final Context myContext; public static int DB_VER = 1; public SQLiteDatabase myDataBase;
String sqlCrear = "CREATE TABLE promesas (_id INTEGER PRIMARY KEY AUTOINCREMENT, versiculos TEXT, autor TEXT)";
//Constructor para conectarnos a la base de datos public DataBaseHelper(Context context, String nombre, SQLiteDatabase.CursorFactory factory, int version) { super(context, nombre, factory, version); this.myContext = context;
}
//Creamos la Base de Datos public void onCreate(SQLiteDatabase db) { if (db.isReadOnly()) { db = getWritableDatabase(); } db.execSQL(sqlCrear);
} public void inicializar () {
// Esto es para inicializar la BD DataBaseHelper db2 = new DataBaseHelper(this, DB_NAME, null, DB_VER); try { db2.createDataBase(); db2.openDataBase(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
//Aqui actualizamos la version de la base de datos en caso de requerirla public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //no hacemos nada aun }
//Chequear si la base de datos existe en el directorio public void createDatabase() throws IOException { boolean dbExist = checkDatabase();
if (dbExist) { //si existe no debemos hacer nada } else { // Llamando a este método se crea la base de datos vacía en la ruta // por defecto del sistema de nuestra aplicación por lo que // podremos sobreescribirla con nuestra base de datos. this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copiando database"); } }
}
private boolean checkDatabase() { try (SQLiteDatabase checkDB = null) { try { String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } catch (SQLDataException e) { //Base de datos no creada aun } if (checkDB() != null) { //cerramos la base de datos checkDB.close(); } return checkDB != null ? true : false; } }
public void openDatabase() throws SQLException { String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
public synchronized void close() { if (myDataBase != null) { myDataBase.close(); super.close(); }
}
private void copyDataBase() throws IOException { OutputStream databaseOutputStream = new FileOutputStream("" + DB_PATH + DB_NAME); InputStream databaseInputStream;
byte[] buffer = new byte[1024]; int length;
databaseInputStream = myContext.getAssets().open("palabras"); while ((length = databaseInputStream.read(buffer)) > 0) { databaseOutputStream.write(buffer); } databaseInputStream.close(); databaseOutputStream.flush(); databaseOutputStream.close(); }
} Este codigo al tratar de ejecutarlo me lanza un error en el area de CheckDB que me lo muestra en rojo, no se por que pueda ser. Ahora bien, luego de hacer la conexion (la cual no tengo idea de si se realiza o no) llamo a mi activity para que me muestre el resultado de la consulta: Citar:package com.promesas.corpoeureka.promesas;
import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.TextView; import android.widget.Toast;
/** * Created by JesusMoran on 03-01-2015. */ public class frases extends ActionBarActivity { static final String PUBLF = "Mira más PROMESAS DE DIOS, en el GooglePlay (http://goo.gl/X1GQOy)...";
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.frases); TextView text = (TextView)findViewById(R.id.frasesTXT);
DataBaseHelper helper = new DataBaseHelper(this, DataBaseHelper.DB_NAME, null, DataBaseHelper.DB_VER); helper.getReadableDatabase();
//Aqui voy a intentar consultar la base de datos Cursor leer = helper.getReadableDatabase().rawQuery("SELECT versiculo, autor FROM promesas ORDER BY RAND()"); String x[] = text.setText(x[0]);
Toast.makeText(this, "Me he conectado a la base de datos ;)", Toast.LENGTH_LONG).show(); helper.close();
}
public void backFr (View view) { Intent i = new Intent(this, Main.class ); startActivity(i); finish(); }
public void shareF(View view) { TextView txtmensajeF = (TextView) findViewById(R.id.frasesTXT); String mFrases = txtmensajeF.getText().toString(); Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, mFrases + " " + PUBLF); startActivity(sendIntent);
} Aqui de verdad que no tengo ni idea de como continuar, ademas que me muestra errores como mencione asi que tampoco lo puedo ver en el emulador. Ojala puedas echarme una mano, desde ya muchas gracias
|