Can't create a second table in SQLite on Android
I have created a DB Adapter class and that is supposed to create two tables called Users_Details and Creditcard_Details. However when I exported and examined my database created with SQLite Browser, I found that only the former table was created. I'm unable to understand as to what's causing this. Can someone suggest or help me debug this problem?
Here's the code for the DB Adapter:
package com.androidbook.LoginForm;
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;
import android.util.Log;
public class DBAdapter {
/*------------------------User Details ---------------------------------*/
public static Cursor d;
public static final String KEY_ROWID = "_id";
public static final String KEY_Name = "name";
public static final String KEY_Username = "username";
public static final String KEY_Password = "password";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "Wallet";
private static final String DATABASE_TABLE = "User_Details";
/*------------------------Credit Cards Table----------------------*/
private static final String KEY_CCID = "_ccid";
private static final String KEY_CCUNAME= "cuname";
private static final String KEY_CCNO = "ccno";
private static final String KEY_CVV = "cvvno";
private static final String EXP_DATE = "expdate";
private static final String CREDITCARDS_TABLE = "Creditcard_Details";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table"+ DATABASE_TABLE + " ( " + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_Name + " text not null, " + KEY_Username + " text not null, "
+ KEY_Password + " text not null);";
private static final String CCTABLE_CREATE = "create table " +
CREDITCARDS_TABLE + " (" + KEY_CCID +
" integer primary key autoincrement, " +
KEY_CCUNAME + "text not null, " + KEY_CCNO + " text not null, " + KEY_CVV + " text not null, " + EXP_DATE + " text not null);";
/*---------------------Create Credit Card Table -------------------------------*/
/* private static final String CCTABLE_CREATE =
"create table"+ CREDITCARDS_TABLE + " ( " + KEY_CCID + " integer primary key , "
+ KEY_CCUNAME + " text not null, " + KEY_CCNO + " ccno text not null, "
+ KEY_CVV + " text not null, " + EXP_DATE + " text not null);";//+ "FOREIGN KEY(_ccid) REFERENCES User_Details(_id))";
*/
private final Context context;
public DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
db.execSQL(CCTABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
public int Login(String username,String password)
{
try
{
Cursor c = null;
c = db.rawQuery("select * from User_Details where username =" + "\""+ username + "\""+" and password="+ "\""+ password + "\"", null);
c.moveToFirst();
//Toast.makeText(DBAdapter.this, "correct"+" "+c,Toast.LENGTH_LONG).show();
d= c;//CCview(tempid);
return c.getCount();
}
catch(Exception e)
{
e.printStackTrace();
}
return 0;
}
//-----------------------Display Credit Card -----------------------------
/* public int Getid(String tempid)
{ Cursor c;
c = db.rawQuery("select id from User_Details where username ="
+ "\""+ username + "\"", null);
return Integer.parseInt(c.getString(0));
}*/
public Cursor CCview(long menuid)throws SQLException
{
Cursor mCursor =
db.query(true, CREDITCARDS_TABLE, new String[] {
KEY_CCID,
KEY_CCUNAME,
KEY_CCNO,
KEY_CVV,
EXP_DATE,
},
KEY_CCID + "=" + menuid,
null,
null,
null,
null,
null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//--------------------Entries into Credit Card Table------------------------------------
//---insert a title into the database---
public long insertCreditcard( String j, String k, String l, String date)
{
ContentValues creditValues = new ContentValues();
// creditValues.put(KEY_CCID, i);
creditValues.put(KEY_CCUNAME, j);
creditValues.put(KEY_CCNO, k);
creditValues.put(KEY_CVV, l);
creditValues.put(EXP_DATE, date);
return db.insert(CREDITCARDS_TABLE, null, creditValues);
}
//---opens the database---
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---insert a title into the database---
public long insertTitle(String name, String username, String password)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_Name, name);
initialValues.put(KEY_Username, username);
initialValues.put(KEY_Password, password);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//---deletes a particular title---
public boolean deleteTitle(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
//---retrieves all the titles---
public Cursor getAllTitles()
{
return db.query(DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_Name,
KEY_Username,
KEY_Password},
null,
null,
null,
null,
null);
}
//---retrieves a particular title---
public Cursor getTitle(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_Name,
KEY_Username,
KEY_Password
},
KEY_ROWID + "=" + rowId,
null,
null,
null,
null,
null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//---updates a title---
public boolean updateTitle(long rowId, String name,
String username, String password)
{
ContentValues args = new ContentValues();
args.put(KEY_Name, name);
args.put(KEY_Username, username);
args.put(KEY_Password, password);
return db.update(DATABASE_TABLE, args,
开发者_StackOverflow社区 KEY_ROWID + "=" + rowId, null) > 0;
}
}
try changing the DATABASE_VERSION number. I suggest this because you probably during development had one table (and db_ver was 1), then added a 2nd table to the code but it didn't appear (and hence this post).
or uninstall + reinstall would achieve this.
精彩评论