Проблемы с DATABASE и языком сценариев JavaScript

Он был датирован оно я функционирует верно, меня сохраняет информация, которую я хочу, проблема приходит, когда новый член (ДАТА) добавляет listView, закрывают для меня приложение после того, как инициализируется, LOG:

12-29 19:17:07.187 24552-24552/prueba.nuevointento E/SQLiteLog: (1) near "fecha": syntax error
12-29 19:17:07.190 24552-24552/prueba.nuevointento E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: prueba.nuevointento, PID: 24552
                                                                     Theme: themes:{default=overlay:com.saalim.cm.theme.dusk, iconPack:com.saalim.cm.theme.dusk, fontPkg:com.saalim.cm.theme.dusk, com.android.systemui=overlay:com.saalim.cm.theme.dusk, com.android.systemui.navbar=overlay:com.saalim.cm.theme.dusk}
                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{prueba.nuevointento/prueba.nuevointento.MyActivity}: android.database.sqlite.SQLiteException: near "fecha": syntax error (code 1): , while compiling: create table miembros(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL) fecha TEXT NOT NULL);
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
                                                                         at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                         at android.os.Looper.loop(Looper.java:148)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5461)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                         at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
                                                                      Caused by: android.database.sqlite.SQLiteException: near "fecha": syntax error (code 1): , while compiling: create table miembros(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL) fecha TEXT NOT NULL);
                                                                         at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                         at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                                                                         at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                                                                         at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                         at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                         at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                         at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
                                                                         at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
                                                                         at prueba.nuevointento.DBhelper.onCreate(DBhelper.java:32)
                                                                         at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
                                                                         at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
                                                                         at prueba.nuevointento.SQLControlador.abrirBaseDeDatos(SQLControlador.java:21)
                                                                         at prueba.nuevointento.MyActivity.onCreate(MyActivity.java:29)
                                                                         at android.app.Activity.performCreate(Activity.java:6251)
                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) 
                                                                         at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                         at android.os.Looper.loop(Looper.java:148) 
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5461) 
                                                                         at java.lang.reflect.Method.invoke(Native Method) 
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                         at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102) 

МОЙ КОД:

AgregarMiembro.java

public class AgregarMiembro extends Activity implements OnClickListener {
    EditText et;
    EditText et2;
    Button btnAgregar, read_bt;
    SQLControlador dbconeccion;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.agregar_miembro);
        et = (EditText) findViewById(R.id.et_miembro_id);
        et2 = (EditText) findViewById(R.id.et_miembrofecha_id);
        btnAgregar = (Button) findViewById(R.id.btnAgregarId);

        dbconeccion = new SQLControlador(this);
        dbconeccion.abrirBaseDeDatos();
        btnAgregar.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.btnAgregarId:
                String name = et.getText().toString();
                dbconeccion.insertarDatos(name);
                Intent main = new Intent(AgregarMiembro.this, MyActivity.class)
                        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(main);
                break;

            default:
                break;
        }
    }
}

DBHelper.java:

public class DBhelper extends SQLiteOpenHelper {

    // Información de la tabla
    public static final String TABLE_MEMBER = "miembros";
    public static final String MIEMBRO_ID = "_id";
    public static final String MIEMBRO_NOMBRE = "nombre";
    public static final String MIEMBROFECHA_NOMBRE = "fecha";

    // información del a base de datos
    static final String DB_NAME = "DBMIEMBRO";
    static final int DB_VERSION = 1;

    // Información de la base de datos
    private static final String CREATE_TABLE = "create table "
            + TABLE_MEMBER + "(" + MIEMBRO_ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + MIEMBRO_NOMBRE + " TEXT NOT NULL) "
            + MIEMBROFECHA_NOMBRE + " TEXT NOT NULL);";

    public DBhelper(Context context) {
        super(context, DB_NAME, null,DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMBER);
        onCreate(db);
    }
}

modificarmiembro.java

public class ModificarMiembro extends Activity implements OnClickListener {

    EditText et;
    EditText et2;
    Button btnActualizar, btnEliminar;

    long member_id;

    SQLControlador dbcon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.modificar_miembro);

        dbcon = new SQLControlador(this);
        dbcon.abrirBaseDeDatos();

        et = (EditText) findViewById(R.id.et_miembro_id);
        et2 = (EditText) findViewById(R.id.et_miembrofecha_id);
        btnActualizar = (Button) findViewById(R.id.btnActualizar);
        btnEliminar = (Button) findViewById(R.id.btnEliminar);

        Intent i = getIntent();
        String memberID = i.getStringExtra("miembroId");
        String memberName = i.getStringExtra("miembroNombre");
        String memberFecha = i.getStringExtra("miembrofechaNombre");

        member_id = Long.parseLong(memberID);

        et.setText(memberName);
        et2.setText(memberFecha);

        btnActualizar.setOnClickListener(this);
        btnEliminar.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.btnActualizar:
                String memName_upd = et.getText().toString();
                dbcon.actualizarDatos(member_id, memName_upd);
                this.returnHome();
                break;

            case R.id.btnEliminar:
                dbcon.deleteData(member_id);
                this.returnHome();
                break;
        }
    }

    public void returnHome() {

        Intent home_intent = new Intent(getApplicationContext(),
                MyActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(home_intent);
    }
}

MyActivity.java

public class MyActivity extends ActionBarActivity {

    Button btnAgregarMiembro;
    ListView lista;
    SQLControlador dbconeccion;
    TextView tv_miemID, tv_miemNombre, tv_miemfechaNombre;

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

        dbconeccion = new SQLControlador(this);
        dbconeccion.abrirBaseDeDatos();
        btnAgregarMiembro = (Button) findViewById(R.id.btnAgregarMiembro);
        lista = (ListView) findViewById(R.id.listViewMiembros);

        //acción del boton agregar miembro
        btnAgregarMiembro.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent iagregar = new Intent(MyActivity.this, AgregarMiembro.class);
                startActivity(iagregar);
            }
        });

        Cursor cursor = dbconeccion.leerDatos();

        String[] from = new String[] {
                DBhelper.MIEMBRO_ID,
                DBhelper.MIEMBRO_NOMBRE,
                DBhelper.MIEMBROFECHA_NOMBRE
        };
        int[] to = new int[] {
                R.id.miembro_id,
                R.id.miembro_nombre,
                R.id.miembrofecha_nombre
        };

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                MyActivity.this, R.layout.formato_fila, cursor, from, to);

        adapter.notifyDataSetChanged();
        lista.setAdapter(adapter);

        // acción cuando hacemos click en item para poder modificarlo o eliminarlo
        lista.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {

                tv_miemID = (TextView) view.findViewById(R.id.miembro_id);
                tv_miemNombre = (TextView) view.findViewById(R.id.miembro_nombre);
                tv_miemfechaNombre = (TextView) view.findViewById(R.id.miembrofecha_nombre);

                String aux_miembroId = tv_miemID.getText().toString();
                String aux_miembroNombre = tv_miemNombre.getText().toString();
                String aux_miembrofechaNombre = tv_miemfechaNombre.getText().toString();

                Intent modify_intent = new Intent(getApplicationContext(), ModificarMiembro.class);
                modify_intent.putExtra("miembroId", aux_miembroId);
                modify_intent.putExtra("miembroNombre", aux_miembroNombre);
                modify_intent.putExtra("miembrofechaNombre", aux_miembroNombre);
                startActivity(modify_intent);
            }
        });
    }  //termina el onCreate
} //termina clase

SQLControlador.java

public class SQLControlador {

    private DBhelper dbhelper;
    private Context ourcontext;
    private SQLiteDatabase database;

    public SQLControlador(Context c) {
        ourcontext = c;
    }

    public SQLControlador abrirBaseDeDatos() throws SQLException {
        dbhelper = new DBhelper(ourcontext);
        database = dbhelper.getWritableDatabase();
        return this;
    }

    public void cerrar() {
        dbhelper.close();
    }

    public void insertarDatos(String name) {
        ContentValues cv = new ContentValues();
        cv.put(DBhelper.MIEMBRO_NOMBRE, name);
        cv.put(DBhelper.MIEMBROFECHA_NOMBRE, name);
        database.insert(DBhelper.TABLE_MEMBER, null, cv);
    }

    public Cursor leerDatos() {
        String[] todasLasColumnas = new String[] {
                DBhelper.MIEMBRO_ID,
                DBhelper.MIEMBRO_NOMBRE,
                DBhelper.MIEMBROFECHA_NOMBRE
        };
        Cursor c = database.query(DBhelper.TABLE_MEMBER, todasLasColumnas, null,
                null, null, null, null);
        if (c != null) {
            c.moveToFirst();
        }
        return c;
    }

    public int actualizarDatos(long memberID, String memberName) {
        ContentValues cvActualizar = new ContentValues();
        cvActualizar.put(DBhelper.MIEMBRO_NOMBRE, memberName);
        cvActualizar.put(DBhelper.MIEMBROFECHA_NOMBRE, memberName);
        int i = database.update(DBhelper.TABLE_MEMBER, cvActualizar,
                DBhelper.MIEMBRO_ID + " = " + memberID, null);
        return i;
    }

    public void deleteData(long memberID) {
        database.delete(DBhelper.TABLE_MEMBER, DBhelper.MIEMBRO_ID + "="
                + memberID, null);
    }
}

activity_my.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <Button
        android:id="@+id/btnAgregarMiembro"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Agregar Cumpleaños" />

    <ListView
        android:id="@+id/listViewMiembros"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="2dp">
    </ListView>

</LinearLayout>

agregarmiembro.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp" >

    <EditText
        android:id="@+id/et_miembro_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_marginTop="40dp"
        android:hint="Nombre">

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/et_miembrofecha_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_marginTop="40dp"
        android:hint="Fecha">
    </EditText>

    <Button
        android:id="@+id/btnAgregarId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Agregar" />

</LinearLayout>

formatofila.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/miembro_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#00000000" />

    <TextView
        android:id="@+id/miembro_nombre"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:textSize="17sp"
        android:textStyle="bold"
        android:text="Nombre" />

    <TextView
        android:id="@+id/miembrofecha_nombre"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:textSize="17sp"
        android:textStyle="bold"
        android:text="Fecha" />


</LinearLayout>

modificar_miembro.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp">

    <EditText
        android:id="@+id/et_miembro_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:ems="10" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center_horizontal">

        <Button
            android:id="@+id/btnActualizar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Actualizar" />

        <Button
            android:id="@+id/btnEliminar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Eliminar" />
    </LinearLayout>

</LinearLayout>
0
задан 29.12.2016, 20:18
0 ответов

Ошибка, которая дает тебе,, - потому что не хорошо сформирован query, который создает таблицу.

//Информация о базе данных лиши тебя static конец String CREATE_TABLE = "поверьте table "+ TABLE_MEMBER +" (" + MIEMBRO_ID + "INTEGER PRIMARY KEY AUTOINCREMENT," + MIEMBRO_NOMBRE + "TEXT NOT NULL)" + MIEMBROFECHA_NOMBRE + "TEXT NOT NULL);";

Тебе превышает скобка, что есть в + MIEMBRO_NOMBRE + "TEXT NOT NULL)"

http://www.w3schools.com/sql/sql_create_table.asp здесь у тебя есть помощь с консультациями sql более использованные

Привет

1
ответ дан 03.12.2019, 17:56
  • 1
    Спасибо @antocara! Из-за многого, что это смотрел, я не понял...! У меня есть другая проблема, посмотрим ты можешь помогать мне, все то, что я пишу в id " et_miembrofecha_id" он не вытекает, у меня выходит то, что он написал в " et_miembro_id" большое спасибо снова. –  29.12.2016, 23:10