Código fuente del proyecto Querybuilder
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) p>
{
//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+"," p>
+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 p>
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()
{ p>
//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
} p>
}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.