我的数据库有问题,我想创建 5 个表,但只创建第一个表 (datos)。我的代码是:
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
import android.widget.DatePicker;
import android.widget.TimePicker;
public class AdaptadorDB {
//BASE DE DATOS Y TABLAS
public static final String NOMBRE_BD = "muebleria";
public static final String TABLA_DATOS = "datos";
public static final String TABLA_EMPRESAS = "empresas";
public static final String TABLA_COBRADORES = "cobradores";
public static final String TABLA_PAGOS = "pagos";
public static final String TABLA_ARTICULOS = "articulos";
//CAMPOS DE TABLAS
public static final String nFILA_ID = "_id";
public static final String cCLIENTE = "cliente";
public static final String cNOMBRE = "nombre";
public static final String cDIRECCION = "direccion";
public static final String cCOLONIA = "colonia";
public static final String nFACTURA = "factura";
public static final String nEMPRESA = "empresa";
public static final String nTOTAL = "total";
public static final String nSALDO = "saldo";
public static final String nINTERESES = "intereses";
public static final String nRUTA = "ruta";
public static final String nCOBRADOR = "cobrador";
public static final String cEMPRESA = "nomempresa";
public static final String nTIPOEMP = "tipoempresa";
public static final String cCOBRADOR = "nomcobrador";
public static final String cFECHA = "fecha";
public static final String nPAGO = "pago";
public static final String cHORA = "hora";
public static final String cARTICULO = "articulo";
public static final String nCANTIDAD = "cantidad";
public static final String nFACTURAS = "numfacturas";
public static final String nABONO = "abono";
//VERSION DE BASE DE DATOS
public static final int VERSION_BD = 6;
//MANEJADORES DE LA BASE DE DATOS Y CONTEXTO.
private Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public AdaptadorDB(Context ctx) {
this.context= ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, NOMBRE_BD, null, VERSION_BD);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREAR_DATOS = "create table datos ("+nFILA_ID+" integer "
+"primary key autoincrement, "
+cCLIENTE+" text not null, "+cNOMBRE+" text not null, "
+cDIRECCION+" text not null, "+cCOLONIA+" text not null, "
+nFACTURA+" integer not null, "+nEMPRESA+" integer not null, "
+nTOTAL+" real not null, "+nSALDO+" real not null, "
+nINTERESES+" real not null, "+nRUTA+" integer not null, "
+nCOBRADOR+" integer not null, "+nFACTURAS+" integer not null, "
+nABONO+" real not null);";
String CREAR_INDICE_NOMBRE = "create index nombre on datos ("+cNOMBRE+" asc);";
String CREAR_INDICE_CLIENTE = "create index cliente on datos ("+cCLIENTE+" asc);";
String CREAR_EMPRESAS = "create table empresas ("+nFILA_ID+" integer "
+" primary key autoincrment, "
+nEMPRESA+" integer not null, "+cEMPRESA+" text not null, "
+nTIPOEMP+" integer not null);";
String CREAR_INDICE_EMPRESA = "create index empresa on empresas ("+nEMPRESA+" asc);";
String CREAR_COBRADORES = "create table cobradores ("+nFILA_ID+" integer"
+" primary key autoincrement, "
+nCOBRADOR+" integer not null, "+cCOBRADOR+" text not null);";
String CREAR_INDICE_COBRADORES = "create index cobrador on cobradores ("+nCOBRADOR+" asc);";
String CREAR_PAGOS = "create table pagos ("+nFILA_ID+" integer"
+"primary key autoincrement, "+cFECHA+" text not null, "
+cCLIENTE+" text not null, "+nPAGO+" real not null, "
+cHORA+" TEXT NOT NULL, "+ nFACTURA + " integer not null);";
String CREAR_INDICE_FECHAPAGO = "create index fecha on pagos ("+cFECHA+" asc);";
String CREAR_ARTICULOS = "crea table articulos ("+nFILA_ID+" integer "
+"primary key autoincrement "
+cCLIENTE+" text not null, "+nFACTURA+" integer not null, "
+cARTICULO+" text not null, "+nCANTIDAD+" integer not null);";
String CREAR_INDICE_ARTICULOS = "create index articulo on articulos ("+cARTICULO+");";
try {
db.execSQL(CREAR_DATOS);
db.execSQL(CREAR_INDICE_NOMBRE);
db.execSQL(CREAR_INDICE_CLIENTE);
db.execSQL(CREAR_EMPRESAS);
db.execSQL(CREAR_INDICE_EMPRESA);
db.execSQL(CREAR_COBRADORES);
db.execSQL(CREAR_INDICE_COBRADORES);
db.execSQL(CREAR_PAGOS);
db.execSQL(CREAR_INDICE_FECHAPAGO);
db.execSQL(CREAR_ARTICULOS);
db.execSQL(CREAR_INDICE_ARTICULOS);
} catch (SQLiteException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS datos");
db.execSQL("DROP INDEX IF EXISTS nombre");
db.execSQL("DROP INDEX IF EXISTS cliente");
db.execSQL("DROP TABLE IF EXISTS empresas");
db.execSQL("DROP INDEX IF EXISTS empresa");
db.execSQL("DROP TABLE IF EXISTS cobradores");
db.execSQL("DROP INDEX IF EXISTS cobrador");
db.execSQL("DROP TABLE IF EXISTS pagos");
db.execSQL("DROP INDEX IF EXISTS fecha");
db.execSQL("DROP TABLE IF EXISTS articulos");
db.execSQL("DROP INDEX IF EXISTS articulo");
onCreate(db);
}
}
在这里我调用我的数据库来插入数据,仅在“datos”表中插入数据,在其他 4 个表中不插入。我将数据库导出到我的 PC,并且使用 sqlite 3 只能看到“datos”表。
AdaptadorDB base = new AdaptadorDB(this);
DatosDto datos = new DatosDto();
base.abrir();
long res = base.insertarDatos();
base.cerrar();
Toast.makeText(this, res+" ", Toast.LENGTH_SHORT).show();
这就是我在表格中测试插入的方式。
public long insertarDatos() {
// TODO Auto-generated method stub
if (db != null) {
long res1, res2, res3, res4, res5;
try {
ContentValues cvdatos = new ContentValues();
cvdatos.put(cCLIENTE, "C0001");
cvdatos.put(cNOMBRE, "ARIEL WOOLFOLK VELEZ");
cvdatos.put(cDIRECCION, "AV. DEL SUR #9476");
cvdatos.put(cCOLONIA, "LA GALERA");
cvdatos.put(nFACTURA, 12);
cvdatos.put(nEMPRESA, 3);
cvdatos.put(nTOTAL, 7500.00);
cvdatos.put(nSALDO, 8650.00);
cvdatos.put(nINTERESES, 325.32);
cvdatos.put(nRUTA, 20);
cvdatos.put(nCOBRADOR, 5);
cvdatos.put(nFACTURAS, 3);
cvdatos.put(nABONO, 35.00);
res1 = db.insert(TABLA_DATOS, null, cvdatos);
cvdatos.put(cCLIENTE, "C0002");
cvdatos.put(cNOMBRE, "CARLOS WOOLFOLK VELEZ");
cvdatos.put(cDIRECCION, "JARDIN DE AZUCENAS #9476");
cvdatos.put(cCOLONIA, "JARDINES UNIVERSIDAD");
cvdatos.put(nFACTURA, 10);
cvdatos.put(nEMPRESA, 1);
cvdatos.put(nTOTAL, 4000.00);
cvdatos.put(nSALDO, 2500.00);
cvdatos.put(nINTERESES, 132.32);
cvdatos.put(nRUTA, 40);
cvdatos.put(nCOBRADOR, 1);
cvdatos.put(nFACTURAS, 1);
cvdatos.put(nABONO, 35.00);
res1 = db.insert(TABLA_DATOS, null, cvdatos);
cvdatos.put(cCLIENTE, "C0003");
cvdatos.put(cNOMBRE, "JOSE ESPARZA FLORES");
cvdatos.put(cDIRECCION, "IGNACIO RODRIGUEZ #9476");
cvdatos.put(cCOLONIA, "MAGISTERIAL");
cvdatos.put(nFACTURA, 11);
cvdatos.put(nEMPRESA, 2);
cvdatos.put(nTOTAL, 5000.00);
cvdatos.put(nSALDO, 3500.00);
cvdatos.put(nINTERESES, 232.32);
cvdatos.put(nRUTA, 30);
cvdatos.put(nCOBRADOR, 2);
cvdatos.put(nFACTURAS, 2);
cvdatos.put(nABONO, 45.00);
res1 = db.insert(TABLA_DATOS, null, cvdatos);
cvdatos.put(cCLIENTE, "C0004");
cvdatos.put(cNOMBRE, "IVAN PALAFOX CRUZ");
cvdatos.put(cDIRECCION, "ROBERTO MISTRAL #9476");
cvdatos.put(cCOLONIA, "DEL LEONL");
cvdatos.put(nFACTURA, 14);
cvdatos.put(nEMPRESA, 3);
cvdatos.put(nTOTAL, 6000.00);
cvdatos.put(nSALDO, 4500.00);
cvdatos.put(nINTERESES, 332.32);
cvdatos.put(nRUTA, 10);
cvdatos.put(nCOBRADOR, 3);
cvdatos.put(nFACTURAS, 3);
cvdatos.put(nABONO, 55.00);
res1 = db.insert(TABLA_DATOS, null, cvdatos);
ContentValues cvempresas = new ContentValues();
cvempresas.put(nEMPRESA, 1);
cvempresas.put(cEMPRESA, "MUEBLES Y MAS");
cvempresas.put(nTIPOEMP, 1);
res2 = db.insert(TABLA_EMPRESAS, null, cvempresas);
cvempresas.put(nEMPRESA, 2);
cvempresas.put(cEMPRESA, "PRESTAMOS");
cvempresas.put(nTIPOEMP, 2);
res2 = db.insert(TABLA_EMPRESAS, null, cvempresas);
cvempresas.put(nEMPRESA, 3);
cvempresas.put(cEMPRESA, "PRESTAMOS EN EFECTIVO");
cvempresas.put(nTIPOEMP, 2);
res2 = db.insert(TABLA_EMPRESAS, null, cvempresas);
ContentValues cvcobradores = new ContentValues();
cvcobradores.put(nCOBRADOR, 1);
cvcobradores.put(cCOBRADOR, "LUIS MARTINEZ");
res3 = db.insert(TABLA_COBRADORES, null, cvcobradores);
cvcobradores.put(nCOBRADOR, 2);
cvcobradores.put(cCOBRADOR, "JUAN RODRIGUEZ");
res3 = db.insert(TABLA_COBRADORES, null, cvcobradores);
cvcobradores.put(nCOBRADOR, 3);
cvcobradores.put(cCOBRADOR, "CARLOS SEPULVEDA");
res3 = db.insert(TABLA_COBRADORES, null, cvcobradores);
cvcobradores.put(nCOBRADOR, 4);
cvcobradores.put(cCOBRADOR, "MARIO RUIZ");
res3 = db.insert(TABLA_COBRADORES, null, cvcobradores);
ContentValues cvpagos = new ContentValues();
DatePicker dia = new DatePicker(context);
TimePicker hora = new TimePicker(context);
cvpagos.put(cFECHA, dia.getDayOfMonth()+"/"+dia.getMonth()+"/"+dia.getYear());
cvpagos.put(cCLIENTE, "C0001");
cvpagos.put(nPAGO, 100.00);
cvpagos.put(cHORA, hora.getCurrentHour()+":"+hora.getCurrentMinute()+":");
cvpagos.put(nFACTURA, 12);
res4 = db.insert(TABLA_PAGOS, null, cvpagos);
cvpagos.put(cFECHA, dia.getDayOfMonth()+"/"+dia.getMonth()+"/"+dia.getYear());
cvpagos.put(cCLIENTE, "C0003");
cvpagos.put(nPAGO, 200.00);
cvpagos.put(cHORA, hora.getCurrentHour()+":"+hora.getCurrentMinute()+":");
cvpagos.put(nFACTURA, 11);
res4 = db.insert(TABLA_PAGOS, null, cvpagos);
cvpagos.put(cFECHA, dia.getDayOfMonth()+"/"+dia.getMonth()+"/"+dia.getYear());
cvpagos.put(cCLIENTE, "C0004");
cvpagos.put(nPAGO, 300.00);
cvpagos.put(cHORA, hora.getCurrentHour()+":"+hora.getCurrentMinute()+":");
cvpagos.put(nFACTURA, 14);
res4 = db.insert(TABLA_PAGOS, null, cvpagos);
cvpagos.put(cFECHA, dia.getDayOfMonth()+"/"+dia.getMonth()+"/"+dia.getYear());
cvpagos.put(cCLIENTE, "C0002");
cvpagos.put(nPAGO, 400.00);
cvpagos.put(cHORA, hora.getCurrentHour()+":"+hora.getCurrentMinute()+":");
cvpagos.put(nFACTURA, 11);
res4 = db.insert(TABLA_PAGOS, null, cvpagos);
ContentValues cvarticulos = new ContentValues();
cvarticulos.put(cCLIENTE, "C0004");
cvarticulos.put(nFACTURA, 14);
cvarticulos.put(cARTICULO, "COLCHON COMFORT");
cvarticulos.put(nCANTIDAD, 2);
res5 = db.insert(TABLA_ARTICULOS, null, cvarticulos);
cvarticulos.put(cCLIENTE, "C0002");
cvarticulos.put(nFACTURA, 10);
cvarticulos.put(cARTICULO, "BASE DE MADERA");
cvarticulos.put(nCANTIDAD, 2);
res5 = db.insert(TABLA_ARTICULOS, null, cvarticulos);
cvarticulos.put(cCLIENTE, "C0003");
cvarticulos.put(nFACTURA, 11);
cvarticulos.put(cARTICULO, "MESA PRINCESS");
cvarticulos.put(nCANTIDAD, 1);
res5 = db.insert(TABLA_ARTICULOS, null, cvarticulos);
cvarticulos.put(cCLIENTE, "C0004");
cvarticulos.put(nFACTURA, 14);
cvarticulos.put(cARTICULO, "SILLA PRINCESS");
cvarticulos.put(nCANTIDAD, 4);
res5 = db.insert(TABLA_ARTICULOS, null, cvarticulos);
Toast.makeText(context, res1+"", Toast.LENGTH_LONG).show();
Toast.makeText(context, res2+"", Toast.LENGTH_LONG).show();
Toast.makeText(context, res3+"", Toast.LENGTH_LONG).show();
Toast.makeText(context, res4+"", Toast.LENGTH_LONG).show();
Toast.makeText(context, res5+"", Toast.LENGTH_LONG).show();
return 0;
} catch (SQLiteException e) {
Toast.makeText(context, e.getMessage().toString(), Toast.LENGTH_LONG).show();
return 0;
}
} else {
Toast.makeText(context, "Base no creada", Toast.LENGTH_LONG).show();
return 0;
}
}
我已经更改了版本,但什么也没发生,只创建了“datos”表,但没有创建“empresas”、“cobradores”、“pagos”和“articulos”。有人可以帮我看看错误在哪里吗?
提前致谢。
PS对不起,如果我的英语不太好:)