-1

I am creating an application which requires login. I created the main and the login activity.so when i insert username and password it should save into database. i am getting these errors when i am installing the app.

    10-05 23:12:18.959 18728-18728/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:12:18.959 18728-18728/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:16:45.809 18970-18970/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:16:45.809 18970-18970/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:26:21.659 31040-31040/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:26:21.659 31040-31040/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:28:34.489 31330-31330/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:28:34.489 31330-31330/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:45:53.309 31935-31935/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:45:53.309 31935-31935/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:48:01.659 32267-32267/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:48:01.659 32267-32267/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-05 23:56:57.979 32571-32571/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:24)
10-05 23:56:57.979 32571-32571/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:33)
10-05 23:58:57.249 451-451/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-05 23:58:57.249 451-451/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:02:41.189 898-898/com.example.shoaib.myapplication E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:02:41.189 898-898/com.example.shoaib.myapplication E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:04:54.439 1175-1175/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:04:54.439 1175-1175/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:05:57.279 1426-1426/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:05:57.279 1426-1426/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)
10-06 00:07:16.629 1733-1733/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.onCreate(DatabaseOperations.java:23)
10-06 00:07:16.629 1733-1733/? E/AndroidRuntime:     at com.example.shoaib.myapplication.DatabaseOperations.PutInformation(DatabaseOperations.java:32)

this one is the DatabaseOperations.java file

package com.example.shoaib.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by shoaib on 10/5/2015.
 */
public class DatabaseOperations extends SQLiteOpenHelper{

    public static final int database_version=1;
    public String CREATE_QUERY="CREATE TABLE "+tableData.tableInfo.TABLE_NAME+"("+tableData.tableInfo.USER_NAME+" TEXT, "+tableData.tableInfo.USER_PASS+" TEXT, );";
    public DatabaseOperations(Context context) {
        super(context, tableData.tableInfo.DATABASE_NAME, null, database_version);
        Log.d("Database Operations","Database Created");
    }

    @Override
    public void onCreate(SQLiteDatabase sdb) {
        sdb.execSQL(CREATE_QUERY);
        Log.d("Database Operations", "Table Created");
    }

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

    }
    public void PutInformation(DatabaseOperations dop,String name,String pass){
        SQLiteDatabase SQ=dop.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(tableData.tableInfo.USER_NAME,name);
        cv.put(tableData.tableInfo.USER_PASS, pass);
        long k=SQ.insert(tableData.tableInfo.TABLE_NAME,null,cv);
        Log.d("Database Operations","one row inserted");
    }
}
Asif Mehmood
  • 467
  • 3
  • 16
  • 1
    actual exception is not in your post. I believe some part of exception output is missing. btw, it seems you dont call onCreate from PutInformation. so you should not get such exception from this code in my opinion – Adem Oct 05 '15 at 20:31
  • so for that what changes i have to make? – Asif Mehmood Oct 05 '15 at 20:35
  • @Adem you mean to say that i am not calling onCreate() method but that executes automatically so it does't need to be called form PutInformation(). – Asif Mehmood Oct 05 '15 at 20:37
  • how do you save "name" and "pass". please post how you create DatabaseOperations and how you call PutInformation – Adem Oct 05 '15 at 20:39
  • DatabaseOperations DB = new DatabaseOperations(ctx); DB.PutInformation(DB,name,pass); @Adem – Asif Mehmood Oct 05 '15 at 20:44
  • I think you should not call "dop.getWritableDatabase();" everytime. you should keep SQLiteDatabase in class level. so you have to have only one SQLiteDatabase that you only get once with getWritableDatabase. read http://stackoverflow.com/questions/12015731/android-sqlite-example – Adem Oct 05 '15 at 20:52
  • http://stackoverflow.com/questions/7888512/usage-of-sqliteopenhelper-getwritabledatabase Read this @Adem – Asif Mehmood Oct 05 '15 at 20:59
  • 1
    it seems your exception is not full. so, I can not understand what is wrong. possible reason, you might try to open same db multiple times. for instance, do you create multiple instance of DatabaseOperations ? without closing previous – Adem Oct 05 '15 at 21:05
  • No there are't multiple instances – Asif Mehmood Oct 05 '15 at 21:07
  • that's not the code that throws that stacktrace. – njzk2 Oct 05 '15 at 22:24

2 Answers2

1

If you look in the logcat you'll see exception name and full stacktrace:

Caused by: android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: CREATE TABLE table_name(username TEXT, pass TEXT, );

Remove the redundant last comma from the query:

CREATE TABLE table_name(username TEXT, pass TEXT, );
//                                              ^ this one
Sergey Glotov
  • 19,479
  • 11
  • 78
  • 93
0

When you create table you have to add column _id Integer primary key.

Adam Miśtal
  • 677
  • 4
  • 14
  • 1
    actually you don't. you should, because it will be easier to use a CursorAdapter, but that is not a requirement. – njzk2 Oct 05 '15 at 22:24