2

when trying to insert data into my sqlite db I receive a logcat error "unknown database logindata: , while compiling:". the error message sounds straight forward but I can locate where the issue is. in my DB class or the activity which is inserting the data.

error message:

   unknown database logindata: , while compiling: create table if not exists logindata.db (_id integer primary key autoincrement,username text not null,password text not null);

database:

  public class LoginDB extends SQLiteOpenHelper {

//Table attributes
public static final String DATABASE_NAME = "logindata.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME_INFOTABLE = "credentials";

// Data attributes
public static final String COLUMN_NAME_USERNAME = "username";
public static final String COLUMN_NAME_PASSWORD = "password";

private SQLiteOpenHelper DBHelper;
private SQLiteDatabase db;



public LoginDB(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub      

        String sqlDataStore = "create table if not exists " +
        DATABASE_NAME + " ("+ BaseColumns._ID + " integer primary key autoincrement,"

                    + COLUMN_NAME_USERNAME + " text not null,"
                    + COLUMN_NAME_PASSWORD + " text not null);";

        db.execSQL(sqlDataStore);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        if(oldVersion == 1 && newVersion == 2){
            //Upgrade the database
    }   

}

    public boolean Login(String username, String password) throws SQLException
    {
        Cursor mCursor = db.rawQuery("SELECT * FROM " + DATABASE_NAME + " WHERE username=? AND password=?",
                new String[]{username,password});
        if(mCursor !=null) {
            if(mCursor.getCount()>0)
            {
            return true;
            }
        }
            return false;
        }

    public void open() {
        // TODO Auto-generated method stub
        db = DBHelper.getWritableDatabase();
    }
    public void close() {
        DBHelper.close();
    }
     }

activity:

   public class CredentialsActivity extends Activity implements OnClickListener{

   private Button lReg;
   private EditText lUname;
   private EditText lPword;

   private LoginDB loginDb = new LoginDB(CredentialsActivity.this);

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

   lReg = (Button)findViewById(R.id.reg_button);
   lReg.setOnClickListener(this);
   }

  public void onClick(View v) {

switch(v.getId()) {

case R.id.reg_button:
    lUname = (EditText)findViewById(R.id.reg_uname);
    lPword = (EditText)findViewById(R.id.reg_pswd);

    String uname = lUname.getText().toString();
    String pass = lPword.getText().toString();
    boolean invalid = false;

    if(uname.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Username Missing", Toast.LENGTH_SHORT).show();
    }else if(pass.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Password Missing", Toast.LENGTH_SHORT).show();
    }
    if(invalid == false){
        addEntry(uname, pass);
        Intent i_register = new Intent(CredentialsActivity.this, LoginDB.class);
        startActivity(i_register);
        finish();
}}
}
    public void onDestroy() {
        super.onDestroy();
        loginDb.close();
    }

     public void addEntry(String uname, String pass){

     SQLiteDatabase db = loginDb.getWritableDatabase();
     ContentValues values = new ContentValues();
     values.put("username", uname);
     values.put("password", pass);

     try{
         db.insert(LoginDB.DATABASE_NAME, null, values);
         Toast.makeText(getApplicationContext(), "Saved! Please login now",            Toast.LENGTH_SHORT).show();
         }catch(Exception err){
      err.printStackTrace();
     }
    }
   }

1 Answer 1

6

logindata.db is not a valid table name, use something without the . e.g. just logindata

public static final String DATABASE_NAME = "logindata.db";
public static final String TABLE_NAME = "logindata";

// ...

String sqlDataStore = "create table if not exists " +
TABLE_NAME + "...

// replace other places where you use DATABASE_NAME too
Sign up to request clarification or add additional context in comments.

1 Comment

is correct... you are using the database name in several places where you should be using your table name TABLE_NAME_INFOTABLE here is an excellent tutorial on sqlite for android vogella.com/articles/AndroidSQLite/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.