La base de datos Sqlite debe crearse una sola vez

Hv desarrollado un proyecto que tiene característica C2DM. Siempre que haya datos disponibles en el servidor; El servidor empuja los datos a todos los dispositivos que hv esta aplicación (en mi caso es un msg pequeño).

Ahora mi pregunta es hace cada vez que una base de datos y una tabla se crean donde viene un mensaje, aquí está mi código,

public class MessageHelper extends Activity { public String str; public int sts; public Date timeStamp; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bundle extras = getIntent().getExtras(); if (extras != null) { this.str = extras.getString("msgg"); Log.d("C2DM", this.str); } // Create a ref of SQLite SQLiteDatabase db; //use tat ref to open or create a table db = openOrCreateDatabase( "/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); try { //initialsiging a query with all the table fields final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4(" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "msg TEXT not null," + "msg_time INTEGER not null," + "msg_status INTEGER not null);"; //execute the above query db.execSQL(CREATE_TABLE_CONTAIN); timeStamp = new Date(); String sql = "INSERT or replace INTO tbl_Message4 (msg,msg_time,msg_status) VALUES('"+this.str+"' ,'"+this.timeStamp+"' , 0)" ; db.execSQL(sql); } } 

También tengo la clase llamada MessageReceiver que extiende Broadcastreceiver; eveytime un mensaje viene la clase se ejecuta que inturn carga el MessageHelper.class aquí es el código para MessageReceiver,

 public class C2DMMessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.w("C2DM", "Message Receiver called"); if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) { Log.w("C2DM", "Received message"); final String payload = intent.getStringExtra("payload"); Log.d("C2DM", "dmControl: payload = " + payload); // TODO Send this to my application server to get the real data // Lets make something visible to show that we received the message createNotification(context, payload); } } public void createNotification(Context context, String payload) { NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Message received", System.currentTimeMillis()); // Hide the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL; //Intent intent = new Intent(context, MessageReceivedActivity.class); //intent.putExtra("payload", payload); Intent intent = new Intent(context, MessageHelper.class); intent.putExtra("msgg", payload); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); //PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); //notification.setLatestEventInfo(context, "Message", "New message received", pendingIntent); //notificationManager.notify(0, notification); } } 

Lo que estoy buscando es, una base de datos debe ser creado cuando la aplicación se instala por primera vez.

Gracias por adelantado,

El soltero

La base de datos se creará una sola vez ya que su nombre no se modifica. Y sí, solo se creará en el momento en que su aplicación inicie la actividad MessageHelper por primera vez.

La base de datos se creará sólo una vez con un solo nombre.

Aquí puede optar por este código también para hacerlo más fácil

http://www.vogella.com/articles/AndroidSQLite/article.html

"CREATE TABLE IF NOT EXISTS" creará la tabla solamente si aún no está allí. Por lo que se creará sólo una vez. ¿Borra esta tabla en algún otro lugar?

  • Cómo instalar o obtener acceso a sqlite3 de adb shell
  • Sqlite3 permission denied android
  • Creación de una función personalizada en sqlite3 en android
  • CompileStatement o db.insert en android
  • Recuperación del valor nulo de la base de datos Sqlite en android
  • Compartir base de datos sqlite entre varias actividades de Android
  • SQLiteOpenHelper "onCreate" no se llama? (El DB no existe)
  • Rowid en SQLite3 y Android
  • ¿Es posible simular el cursor sqlite3 en Android cuando no existe db o tabla?
  • ¿Cuáles son las mejores prácticas para SQLite en Android?
  • Orden de inserción de SQLite vs orden de consulta?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.