Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente del proyecto Querybuilder

Código fuente del proyecto Querybuilder

El método ContentProvider se utiliza aquí para definir la base de datos. .

La clase pública AlarmProvider extiende ContentProvider //

{

Cadena final estática privada DB_NAME = " Alarm.db//Nombre de la base de datos

private static final int DB _ VERSION = 1; //Número de versión, cuando el programa se ejecuta por primera vez, se crea la base de datos, si

//Cambia la base de datos, como agregar una tabla. en este momento. , el valor generalmente se cambiará para que el programa pueda instalarse y ejecutarse nuevamente

La base de datos se puede actualizar manualmente

Cadena final ALARMA _. TABLE _ NAME = "alarm//Un nombre de tabla

Privado static final int ALARM = 1; //El valor entero correspondiente a la tabla, equivalente a id.

UriMatcher estático privado mUriMathcer//Cotejador de uri, que establece la relación entre Uri, nombre de tabla e ID, como se muestra a continuación:

estático{

mUriMathcer = new UriMatcher(UriMatcher.NO_MATCH);

mUriMathcer.addURI(AlarmInfo.AUTH,"alarm",alarm);

}

Interfaz privada crear interfaz de tabla //interfaz de creación de tabla

{

Public abstract void createAlarmTable(SQLiteDatabase db);

}

// Clase interna, base de datos Clase auxiliar, implementa la interfaz de creación de tablas.

La clase estática privada DatabaseHelper extiende SQLiteOpenHelper para implementar CreateTableInterface

{

crear interfaz de tabla mCreateTableInterface = this;

Contexto mContext = null

p>

//Constructor, después de llamar a esta función, la base de datos no se

//creada. . Es decir, onCreate a continuación no llama a create db inmediatamente después de ser llamado.

Asistente de base de datos público (contexto de contexto)

{

super(contexto, DB_NAME, null, DB _ VERSION); log .I(etiqueta, "¡Se llamó a DatabaseHelper!");

mContext = contexto

}

@override

public; Void Once Create (SQLite Database DB) // Este método solo se llama una vez cuando se crea la conexión de la base de datos.

{

//Crear tabla de base de datos

mcreatetableinterface .createalarmtable(db);

}

@. Anular

public void al actualizar (base de datos SQLite, versión antigua int, versión nueva int)//Se llama cuando se actualiza la base de datos.

{

//log . I(marca, "¡se llamó a onUpgrade()!");

db exec SQL(" DROP TABLE IF EXISTS. "+ALARM_TABLE_NAME);

onCreate(db);

}

@override

public void createAlarmTable(base de datos SQLiteDatabase)

{

//Crear una tabla

db exec SQL(" CREATE TABLE "+ALARM _ TABLE _ NAME+"("

+LABEL+"clave principal entera",

+LABEL+"el texto no está vacío",

+ALBEL+"el texto no está vacío,"

+ALERT+" El texto no está vacío,"

+ALERT+"El texto no está vacío,"

+ALERT+"El texto no está vacío"

+ ");");

//Inserta algunos datos en la tabla. . .

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info._LABEL+","

+ALARM._TIME+","+ALARM. _ALERT+","

+alarmist. _REPEAT+","+AlarmInfo _ACTIVE+

") valores('11:45 AM','"+flags . tone+" ',' "+flag. EVERY_DAY+" ',' false ');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info._LABEL+", "

+alarmist._TIME+", "+alarmist._ALERT+", "

+alarmist+", "+AlarmInfo

+")Value('WorkAlert','08: 45AM','"+Tag.Tone+"',"+"'lunes, martes, miércoles, jueves, viernes'"

+",' false ');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info._LABEL+","

+alarmismo._TIME+","+alarmismo._ALERT+","+ AlarmInfo._REPEAT+","+alarmismo.

+") valor(' alerta de trabajo ', '09:00 AM ', '+tag.tone+' ', '+tag.tone+' ', ' +tag.weekend+' ', 'vacaciones');");

db . exec SQL(" INSERT INTO "+ALARM _ TABLE _ NAME+"("+ALARM info._LABEL+","

+Alarmist._TIME+","+ALARM info._ALERT+ ","+AlarmInfo._REPEAT+","

+alarmist._Activity

+") valores( 'Yoga','10:15 p.m.','"+banderas.

Tono+" ', "+" 'domingo, miércoles', 'festivo');");

}

}

}

Private DatabaseHelper mDatabaseHelper//Asistente de definición

//Reescriba los siguientes métodos de inserción, eliminación, actualización, consulta y otros.

@Override

público sincronizado int eliminar(Uri Uri, selección de cadena, cadena[] selecciónArgs)

{

SQLiteDatabase db = nulo

éxito booleano = falso;

int count = 0;

prueba {

db = mdatabasehelper.getwritabledatabase(); /p>

db . adquirir referencia();

Éxito = verdadero;

Cambiar(mUriMathcer.match(uri)){

Alerta de caso :

count = db .delete(ALARM_TABLE_NAME, selección, argumentos de selección

Roto

}

}catch(SQLException); e){

e . printstacktrace();

}Finalmente {

if(success == true){

db. referencia de lanzamiento();

}

}

Recuento de devoluciones;

}

@Override

Cadena pública getType(Uri uri)

{

Switch(mUriMathcer.match(uri)){

Alarma de caso:

Devolver información de alarma. Tipo de contenido;

Valor predeterminado:

Lanza una nueva IllegalArgumentException("URI desconocida "+uri

}

}< / p>

@Override

Inserción de Uri de sincronización pública (Uri uri, ContentValues ​​​​initValues)

{

SQLiteDatabase mSQLiteDatabase = null;

Éxito booleano = falso;

Pruebe {

mSQLiteDatabase = mdatabasehelper . getwritabledatabase()

msqlitedatabase

Éxito = verdadero;

long mRowId

Valores ContentValues ​​​​;

if(initValues ​​​​== null){

valores = nuevos valores de contenido();

}de lo contrario {

valores = initValues

}

switch (mUriMathcer.match(uri)) {

Alerta de caso:

mro wid = msqlitedatabase .

_ID, valores);

if (mro wid & gt; 0){

return uri

} en caso contrario {

lanzar nuevo SQLException("No se puede insertar"+uri);

}

}

}catch(SQLException e){

e. printstacktrace();

}Finalmente {

if (éxito == verdadero)

msqlitedatabase.referencia de lanzamiento();

}

return null

}

@override

público booleano onCreate()

{

//log . I("proveedor de alarmas", " onCreate()... ");

mDatabaseHelper = nueva base de datos auxiliar(get context());

Devuelve verdadero

}

@Override

Consulta de cursor pública sincronizada (Uri uri, proyección String[], selección de cadena,

Cadena [] selectArgs, String sortOrder)

{

SQLiteQueryBuilder mSQLiteQueryBuilder = new SQLiteQueryBuilder();

Switch (mUriMathcer.match(uri)) {

Alerta de caso:

msqlitequerybuilder.settables(ALARM_TABLE_NAME);

Roto;

}

SQLiteDatabase mSQLiteDatabase = mdatabasehelper. getwritabledatabase();

msqlitedatabase . adquirir referencia();

cursor mCursor = msqlitequerybuilder . , orden de clasificación);

msqlitedatabase.release reference();

Devolver mCursor

}

@Override

Actualización int de sincronización pública (Uri uri, valor ContentValues ​​​​, selección de cadena,

String[] SelectionArgs)

{

SQLiteDatabase mSQLiteDatabase = null;

int count = 0;

éxito booleano = false

prueba {

mSQLiteDatabase = mdatabasehelper .getwritabledatabase();

p>

msqlitedatabase .acquire reference();

Éxito=True;

Cambiar(mUriMathcer.match(uri)){

Alerta de caso:

recuento = actualización de base de datos msqlite(ALARM_TABLE_NAME, valores, <.

/p>

selección, argumentos de selección);

Descanso;

Valor predeterminado:

Descanso

}

}catch(SQLException e){

e . printstacktrace();

}Finalmente {

if (éxito == verdadero)

msqlitedatabase .referencia de versión();

}

Recuento de devoluciones;

}

}

Puede consultar el código fuente de la alarma, consulta, actualización y otros métodos de Android. Básicamente, no se realizan cambios, solo reemplaza el nombre de la tabla. O agregue un caso.