Android - Crear varias tablas SQLite Android

 
Vista:
sin imagen de perfil

Crear varias tablas SQLite Android

Publicado por Carlos (3 intervenciones) el 19/01/2017 13:50:23
Saludos, estoy intentando crear dos tablas a la vez desde una aplicación android, no se cual es el problema, ya que la primera tabla la crea perfectamente, pero la segunda no la crea, este es el código que estoy usando:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.example.proyecto703;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
 
public class Datos extends SQLiteOpenHelper {
	String consulta = "CREATE TABLE Clientes(dni INTETEGER PRIMARY_KEY NOT NULL,nombre TEXT NOT NULL,direccion TEXT NOT NULL,telefono TEXT NOT NULL)";
	String consulta2 = "CREATE TABLE Facturas(num INTEGER PRIMARY_KEY NOT NULL, dni INTEGER NOT NULL, concepto TEXT NOT NULL, valor INTEGER NOT NULL)";
	//String SQL_CREAR = "create table " + TABLA_NOMBRES + "(" + COLUMNA_ID + " integer primary key autoincrement, " + COLUMNA_NOMBRE + " text not null);";
	public Datos(Context context, String name, CursorFactory factory,int version) {
		super(context, name, factory, version);
 
	}
 
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(consulta);
		db.execSQL(consulta2);
	}
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXISTS Clientes");
		db.execSQL("DROP TABLE IF EXISTS Facturas");
 
        //Se crea la nueva versión de la tabla
        db.execSQL(consulta);
        db.execSQL(consulta2);
	}
 
}
Saludos y gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Crear varias tablas SQLite Android

Publicado por Francisco (358 intervenciones) el 19/01/2017 18:36:36
1
2
3
4
5
6
7
8
9
@Override
	public void onCreate(SQLiteDatabase db) {
 
 
		db.execSQL("CREATE TABLE Clientes(dni INTETEGER PRIMARY_KEY NOT NULL,nombre TEXT NOT NULL,direccion TEXT NOT NULL,telefono TEXT NOT NULL");
		db.execSQL("CREATE TABLE Facturas(num INTEGER PRIMARY_KEY NOT NULL, dni INTEGER NOT NULL, concepto TEXT NOT NULL, valor INTEGER NOT NULL");
 
 
}

Puede que la tabla se te haya creado pero esta vacia prueba insertar registros en las dos tablas.
o tienes una tabla ya creada por eso no se inicia en public void onCreate(SQLiteDatabase db) { }


Borra la base de datos y ejecutalo de nuevo se te deberian de crear las dos tablas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Crear varias tablas SQLite Android

Publicado por juanki (253 intervenciones) el 19/01/2017 19:48:33
Hola

¿No es PRIMARY KEY, sin el guión bajo?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Crear varias tablas SQLite Android

Publicado por Francisco (358 intervenciones) el 19/01/2017 21:37:26
primary key autoincrement


NOT NULL no te hace falta poner not null porque se va auto_incrementando sola.


Tienes razon parece que el error esta ahi;

Pruebalo asi:

db.execSQL("CREATE TABLE Clientes(dni INTETEGER primary key autoincrement,nombre TEXT NOT NULL,direccion TEXT NOT NULL,telefono TEXT NOT NULL");
db.execSQL("CREATE TABLE Facturas(num INTEGER primary key autoincrement, dni INTEGER NOT NULL, concepto TEXT NOT NULL, valor INTEGER NOT NULL");


Si no te funciona borra la base de datos y la creas desde cero.

comenta si ahora ya te funciona

Saludos..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Crear varias tablas SQLite Android

Publicado por juanki (253 intervenciones) el 20/01/2017 00:07:48
Hola

autoincrement, no, según el nombre del campo parece que quiere guardar el número de documento dni, cosa que a mi parecer es incorrecta, yo crearía un campo de nombre ID que sí sería auntoincrement y sería el campo que se debería usar para vincularla con la otra tabla y el dni lo crearía como text. Igual con la otra tabla, le añadiría una columna ID primary key autoincrement.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Crear varias tablas SQLite Android

Publicado por Carlos (3 intervenciones) el 20/01/2017 13:10:50
Hola, finalmente conseguí solucionar el problema, parece que el fallo estaba en que había puesto PRIMARY_KEY con _ y no se estaba creando bien la tabla, gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Crear varias tablas SQLite Android

Publicado por Francisco (358 intervenciones) el 20/01/2017 13:54:35
Aqui he visto el error .

String consulta = "CREATE TABLE Clientes(dni INTETEGER PRIMARY_KEY NOT NULL,nombre TEXT NOT NULL,direccion TEXT NOT NULL,telefono TEXT NOT NULL)";

INTETEGER donde deberia poner INTEGER;

lo habras editado sin darte cuenta, te todas formas me alegro que lo hayas solucionado,la verdad es que en SQLITE una simple coma de mas te hace saltar un error.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar