Error generating Database in Android Studio [closed]

2

I get this when I give it to insert:

  

android.database.sqlite.SQLiteException: near "TABLETables_Telephones": syntax error (code 1) ;, while compiling: CREATE TABLETableTable_phones (idITEGER PRIMARY KEY AUTOINCREMENT, person_nameTEXTNOTNULL, telephone_personnelTEXT NOT NULL);

Main activity:

package com.example.braulioargueta.sql;

import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SQLiteActivity extends Activity implements View.OnClickListener{

    EditText nombre, telefono, ebuscar;
    Button insertar, ver,buscar, editar, eliminar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        nombre = (EditText) findViewById(R.id.edNombre);
        telefono = (EditText) findViewById(R.id.edTelefono);
        insertar = (Button) findViewById(R.id.btInsertar);
        ver = (Button) findViewById(R.id.btVer);
        ebuscar = (EditText) findViewById(R.id.etBuscar);
        buscar = (Button) findViewById(R.id.btBuscar);
        editar = (Button) findViewById(R.id.btEditar);
        eliminar = (Button) findViewById(R.id.btEliminar);

         insertar.setOnClickListener(this);
        buscar.setOnClickListener(this);
        editar.setOnClickListener(this);
        eliminar.setOnClickListener(this);
        ver.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()){

            case R.id.btInsertar:
                boolean funciona= true;

try {
    String nom = nombre.getText().toString();
    String tel = telefono.getText().toString();

    nombre.setText("");
    telefono.setText("");

    Telefonos entrada = new Telefonos(SQLiteActivity.this);
    entrada.abrir();
    entrada.crearEntrada(nom, tel);
    entrada.cerrar();
}catch(Exception e){
    funciona = false;
    String error = e.toString();
    Dialog d = new Dialog (this);
    d.setTitle("NO FUNCIONA");
    TextView tv = new TextView(this);
    tv.setText(error);
    d.setContentView(tv);
    d.show();
}finally {
    if (funciona) {


        Dialog d = new Dialog(this);
        d.setTitle("NO FUNCIONA");
        TextView tv = new TextView(this);
        tv.setText("¡FUNCIONA!");
        d.setContentView(tv);
        d.show();
    }

}
                break;

            case R.id.btVer:


                Intent i = new Intent("com.example.braulioargueta.sql.SQLVista");
                startActivity(i);

                break;

            case R.id.btBuscar:

                String b = ebuscar.getText().toString();
                Long lb = Long.parseLong(b);

                Telefonos tel = new Telefonos(this);
                try {
                    tel.abrir();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                String bN = tel.getN(lb);
                String bT = tel.getT(lb);

                        tel.cerrar();

                nombre.setText(bN);
                telefono.setText(bT);

                break;


            case R.id.btEditar:
try {
    String eNomb = nombre.getText().toString();
    String eTel = telefono.getText().toString();
    String eFila = ebuscar.getText().toString();
    long eFilal = Long.parseLong(eFila);

    Telefonos editar = new Telefonos(this);

    editar.abrir();
    editar.editar(eFilal, eNomb, eTel);
    editar.cerrar();

}catch(Exception e){
    String  error = e.toString();
    Dialog d = new Dialog(this);
    d.setTitle("NO FUNCIONO");
    TextView tv = new TextView(this);
    tv.setText(error);
    d.setContentView(tv);
    d.show();
}
                break;

            case R.id.btEliminar:
                try {
                    String elFila = ebuscar.getText().toString();
                    long elFilal = Long.parseLong(elFila);

                    Telefonos borrar = new Telefonos(this);

                    borrar.abrir();
                    borrar.borrar(elFilal);
                    borrar.cerrar();
                }catch (Exception e){
                    String error = e.toString();
                    Dialog d = new Dialog(this);
                    d.setTitle("NO FUNCIONO");
                    TextView tv = new TextView(this);
                    tv.setText(error);
                    d.setContentView(tv);
                    d.show();
                }
                break;

        }

    }
}

Activity Phones, is the one that helps me:

package com.example.braulioargueta.sql;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Telefonos {

    public static final String ID_FILA = "id";
    public static final String ID_PERSONA = "nombre_persona";
    public static final String ID_TELEFONO = "telefono_persona";

    private static final String N_BD = "Telefonos";
    private static final String N_TABLA = "Tabla_Telefonos";
    private static final int VERSION_BD = 1;

    private BDHelper nHelper;
    private final Context nContexto;
    private SQLiteDatabase nBD;



    private static class BDHelper extends SQLiteOpenHelper {
        public BDHelper(Context context) {
            super(context, N_BD, null, VERSION_BD);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE" + N_TABLA + "(" +
                ID_FILA + "INTEGER PRIMARY KEY AUTOINCREMENT,  " +
        ID_PERSONA + "TEXT NOT NULL, " +
                        ID_TELEFONO + "TEXT NOT NULL);"
        );

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

            db.execSQL("DROP TABLE IF EXISTS" + N_TABLA);
            onCreate(db);

        }
    }

    public Telefonos(Context c){
        nContexto = c;
    }

    public Telefonos abrir()throws Exception{
        nHelper = new BDHelper(nContexto);
        nBD = nHelper.getWritableDatabase();
        return this;
    }
    public void cerrar() {
        nHelper.close();
    }

    public long crearEntrada(String nom, String tel) {
        ContentValues cv = new ContentValues();
        cv.put(ID_PERSONA, nom);
        cv.put(ID_TELEFONO, tel);
        return nBD.insert(N_TABLA, null, cv);
    }
    public String recibir() {

        String[]columnas = new String[]{ID_FILA, ID_PERSONA, ID_TELEFONO};
        Cursor c = nBD.query(N_TABLA, columnas, null, null, null, null, null);
        String resultado ="";

        int iFila = c.getColumnIndex(ID_FILA);
        int iNombre = c.getColumnIndex(ID_PERSONA);
        int iTelefono = c.getColumnIndex(ID_TELEFONO);

        for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            resultado = resultado + c.getString(iFila) + "" + c.getString(iNombre) + "" + c.getString(iTelefono) + "\n" ;
        }
        return resultado;
    }
    public void editar(long eFilal, String eNomb, String eTel) throws SQLException {

        ContentValues cvEditar = new ContentValues();
        cvEditar.put(ID_PERSONA, eNomb);
        cvEditar.put(ID_TELEFONO, eTel);
        nBD.update(N_TABLA,cvEditar, ID_FILA + "=" + eFilal, null);
    }

    public void borrar(long elFilal) throws SQLException {

        nBD.delete(N_TABLA, ID_FILA + "=" +elFilal, null);
    }
    public String getN(Long lb) {

        String[]columnas = new String[]{ID_FILA, ID_PERSONA, ID_TELEFONO};
        Cursor c = nBD.query(N_TABLA, columnas, ID_FILA  + "=" + lb, null, null, null, null);
        if (c != null){
            c.moveToFirst();
            String nb = c.getString(1);
            return nb;
        }

        return null;
    }

    public String getT(Long lb) {

        String[]columnas = new String[]{ID_FILA, ID_PERSONA,ID_TELEFONO};
        Cursor c = nBD.query(N_TABLA, columnas, ID_FILA + "=" + lb, null, null, null, null);
        if (c != null){
            c.moveToFirst();
            String tb = c.getString(2);
            return tb;
        }
        return null;
    }

}

Activity View:

package com.example.braulioargueta.sql;


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class SQLVista extends Activity {

    TextView texto;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vista);

        texto = (TextView) findViewById(R.id.tvTexto);

        Telefonos info = new Telefonos(this);

        try {
            info.abrir();
        } catch (Exception e) {
            e.printStackTrace();
        }

        String datos = info.recibir();
        info.cerrar();
        texto.setText(datos);


    }
}
    
asked by BRAULIO 30.05.2017 в 18:53
source

2 answers

1

Your Query is badly built, there is not a single space in the string you are putting together.

db.execSQL("CREATE TABLE" + N_TABLA + "(" +
                ID_FILA + "INTEGER PRIMARY KEY AUTOINCREMENT,  " +
        ID_PERSONA + "TEXT NOT NULL, " +
                        ID_TELEFONO + "TEXT NOT NULL);"

results in what the error indicates:

  

CREATE TABLETables_Telephones (idITEGER PRIMARY KEY AUTOINCREMENT,   personal_nameTEXTNOTNULL, telephone_personnelTEXT NOT NULL);

All the spaces are missing, you should do:

db.execSQL("CREATE TABLE " + N_TABLA + " ( " +
                    ID_FILA + " INTEGER PRIMARY KEY AUTOINCREMENT,  " +
            ID_PERSONA + " TEXT NOT NULL, " +
                            ID_TELEFONO + " TEXT NOT NULL);"

and in passing

db.execSQL("DROP TABLE IF EXISTS" + N_TABLA);

suffers from the same problem (homework, where to insert the space).

I think that debugging the strings that you put together, it could have been solved easily.

    
answered by 30.05.2017 в 20:21
0

The error is in the query, you try to create a table but the query is incorrect, you still have to add spaces to correctly create the query, if you check the error:

  

CREATE TABLETables_Telephones (idITEGER PRIMARY KEY AUTOINCREMENT,   personal_nameTEXTNOTNULL, telephone_personnelTEXT NOT NULL);

your query to be valid, it should be:

  

CREATE TABLE Table_Telephones (id INTEGER PRIMARY KEY AUTOINCREMENT,   name_person TEXT NOT NULL, telephone_person TEXT NOT NULL);

Add the necessary spaces:

  db.execSQL("CREATE TABLE " + N_TABLA + "(" +
                ID_FILA + " INTEGER PRIMARY KEY AUTOINCREMENT,  " +
        ID_PERSONA + " TEXT NOT NULL, " +
                        ID_TELEFONO + " TEXT NOT NULL);"
        );
    
answered by 30.05.2017 в 20:25