Sqlite problemas con declaracion de la tabla
Publicado por Luis (97 intervenciones) el 02/10/2016 23:41:05
hola de nuevo, otra vez liado en esta ocasion con los campos de la base de datos SQLITE.
Me explico el metodo guardar unas veces guarda correctamente y otras se cierra la aplicacion sin llegar a guardar.
Esta es como abro y creo la base de datos y la tabla.
Tal como esta unas veces guarda y otras se cierra.
Explicacion del reparto de la tabla:
* Fecha VARCHAR =
obtengo la fecha del telefono y la muestro en un TextView con este metodo;
________________________
*Circuito VARCHAR =
Tengo un Array de String que contiene unos 100 circuitos diferentes y mediante seleccion aleatoria se muestra uno en el TextView. El contenido de los circuitos es de texto e inclulle numeros y caracteres, he ahi donde creo que esta el error ya que unos circuitos inclullen numeros y otros no por eso creo que VARCHAR no es correcto he provado INT,TEXT,CHAR y unas veces se rompe y otras no.
Este es un ejemplo de los circuitos:
-Montes de asia 4.000 mtrs / Clima: variable / Hora: Variable
-Pirineo - Oeste / Clima: Variable 10.372,7 mtrs
Mezclamos numeros y texto ¿Que tipo de campo se deve poner?
Cuando termina la eleccion aleatoria del circuito se muestra el resultado en el TextView que le corresponde y se lanza el metodo seleccionVeiculo();
__________________________________________________
*Veiculo =
Lo mismo que en Circuitos un array de String y tambien hay una mezcla de diferentes tipos en el que unos solo inclullen texto y otros texto,numeros y caracteres.
Este es un ejemplo de los Veiculos.
- AUTMOVIL Personal X DIVision Gran Capacidad
- Subaru IMPREZA Sedan (18inch BBS Wheel Option) '10
Por eso no se que asignar a los campos de la tabla. si INT Char He estado buscando en:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=140:tipos-de-variables-en-visual-basic-integer-single-double-string-object-boolean-etc-ejemplos-cu00308a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61
Pero no consigo entender cual es la correcta para cada campo.
Fecha = xxx
Circuito = xxx
Veiculo = xxx
Esta es la activity con los metodos;
Este es un log de los errores que me muestra "Cuando se Force Closed"
E/Database: Failure 1 (near "89": syntax error) on 0x250d38 when preparing 'INSERT INTO standar VALUES('02-10-2016 20:11:21',' Montes Belticos 2.045 mtrs / Clima: variable','Trineo CASERO ED 2.0 X 4WS '89');'.
10-02 20:11:52.128 11506-11506/? D/AndroidRuntime: Shutting down VME/AndroidRuntime: FATAL EXCEPTION: main
android.database.sqlite.SQLiteException: near "89": syntax error: INSERT INTO standarte VALUES('02-10-2016 20:11:21',' Montes Belticos 2.045 mtrs / Clima: variable','Trineo CASERO ED 2.0 X 4WS '89');
at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
¿ Que es exactamente (near "89":) ? A que punto se refiere??
Gracias por haberse detenido ha leer este post se agradece cualquier ayuda.
Gracias
Me explico el metodo guardar unas veces guarda correctamente y otras se cierra la aplicacion sin llegar a guardar.
Esta es como abro y creo la base de datos y la tabla.
1
2
3
dbb=openOrCreateDatabase("StandarDB", Context.MODE_PRIVATE, null);
dbb.execSQL("CREATE TABLE IF NOT EXISTS standar(Fecha VARCHAR,Circuito VARCHAR,Veiculo VARCHAR);");
Tal como esta unas veces guarda y otras se cierra.
Explicacion del reparto de la tabla:
* Fecha VARCHAR =
obtengo la fecha del telefono y la muestro en un TextView con este metodo;
1
2
3
4
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
String formattedDate = df.format(c.getTime());
fechayhora.setText(formattedDate);
*Circuito VARCHAR =
Tengo un Array de String que contiene unos 100 circuitos diferentes y mediante seleccion aleatoria se muestra uno en el TextView. El contenido de los circuitos es de texto e inclulle numeros y caracteres, he ahi donde creo que esta el error ya que unos circuitos inclullen numeros y otros no por eso creo que VARCHAR no es correcto he provado INT,TEXT,CHAR y unas veces se rompe y otras no.
Este es un ejemplo de los circuitos:
-Montes de asia 4.000 mtrs / Clima: variable / Hora: Variable
-Pirineo - Oeste / Clima: Variable 10.372,7 mtrs
Mezclamos numeros y texto ¿Que tipo de campo se deve poner?
Cuando termina la eleccion aleatoria del circuito se muestra el resultado en el TextView que le corresponde y se lanza el metodo seleccionVeiculo();
__________________________________________________
*Veiculo =
Lo mismo que en Circuitos un array de String y tambien hay una mezcla de diferentes tipos en el que unos solo inclullen texto y otros texto,numeros y caracteres.
Este es un ejemplo de los Veiculos.
- AUTMOVIL Personal X DIVision Gran Capacidad
- Subaru IMPREZA Sedan (18inch BBS Wheel Option) '10
Por eso no se que asignar a los campos de la tabla. si INT Char He estado buscando en:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=140:tipos-de-variables-en-visual-basic-integer-single-double-string-object-boolean-etc-ejemplos-cu00308a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61
Pero no consigo entender cual es la correcta para cada campo.
Fecha = xxx
Circuito = xxx
Veiculo = xxx
Esta es la activity con los metodos;
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class Sorteoestandar extends AppCompatActivity {
TextView fechayhora;
TextView resultadocircuito;
TextView resultadoVeiculo;
SQLiteDatabase dbb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sorteoestandar);
fechayhora = (TextView) findViewById(R.id.textViewdata);
resultadocircuito = (TextView) findViewById(R.id.textViewcircuito);
resultadoVeiculo = (TextView) findViewById(R.id.textViewveiculo);
dbb=openOrCreateDatabase("StandarDB", Context.MODE_PRIVATE, null);
dbb.execSQL("CREATE TABLE IF NOT EXISTS standar(Fecha VARCHAR,Circuito VARCHAR,Veiculo VARCHAR);");
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
String formattedDate = df.format(c.getTime());
// Muestro la Fecha y hora en su textView en este formato 02-10-2016 19:58:19
fechayhora.setText(formattedDate);
IniciarSorteo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Aqui todo el sorteo Y al final se lanza guardar
Guardar();
}
});
public void Guardar() {
fechayhora.getText();
resultadocircuito.getText();
resultadoVeiculo.getText();
dbb.execSQL("INSERT INTO standar VALUES('"+fechayhora.getText()+"','"+resultadocircuito.getText()+
"','"+resultadocoche.getText()+"');");
showMessage("Sorteo guardado en historial", "Correctamente");
}
public void showMessage(String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(title) ;
builder.setMessage(message);
// .setTitle("Atenci�n!!")
builder.setCancelable(false);
builder.setNeutralButton("Aceptar",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
Este es un log de los errores que me muestra "Cuando se Force Closed"
E/Database: Failure 1 (near "89": syntax error) on 0x250d38 when preparing 'INSERT INTO standar VALUES('02-10-2016 20:11:21',' Montes Belticos 2.045 mtrs / Clima: variable','Trineo CASERO ED 2.0 X 4WS '89');'.
10-02 20:11:52.128 11506-11506/? D/AndroidRuntime: Shutting down VME/AndroidRuntime: FATAL EXCEPTION: main
android.database.sqlite.SQLiteException: near "89": syntax error: INSERT INTO standarte VALUES('02-10-2016 20:11:21',' Montes Belticos 2.045 mtrs / Clima: variable','Trineo CASERO ED 2.0 X 4WS '89');
at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
¿ Que es exactamente (near "89":) ? A que punto se refiere??
Gracias por haberse detenido ha leer este post se agradece cualquier ayuda.
Gracias
Valora esta pregunta


0