在android中执行sql
我试图在sqlite android开发中创建表。我的问题是,只创建了一个表,而另一个表没有创建 下面是我如何创建它们的在android中执行sql,android,sqlite,Android,Sqlite,我试图在sqlite android开发中创建表。我的问题是,只创建了一个表,而另一个表没有创建 下面是我如何创建它们的 @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(DATABASE_CREATE); db.execSQL(DATABASE_CREATE2); } c
@Override
public void onCreate(SQLiteDatabase db)
{
try
{
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_CREATE2);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
变量:
private static final String DATABASE_CREATE =
"create table if not exists profiles (_id integer primary key autoincrement, "
+ "firstname VARCHAR not null, age VARCHAR not null, "
+ "heightft VARCHAR not null, heightin VARCHAR not null, weight VARCHAR not null, duration VARCHAR not null, bmi VARCHAR not null);";
private static final String DATABASE_CREATE2 =
"create table if not exists routines (_id integer primary key autoincrement, "
+ "weightclass VARCHAR not null, musclegroup VARCHAR not null, "
+ "exercise VARCHAR not null, numberofsets VARCHAR not null, numeberofrepitition VARCHAR not null, day VARCHAR not null);";
你知道问题出在哪里吗?谢谢
更新:
private static final String DATABASE_NAME = "fgtDB";
private static final String DATABASE_TABLE = "profiles";
private static final String DATABASE_TABLE2 = "routines";
private static final int DATABASE_VERSION = 2;
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
try
{
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_CREATE2);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
@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 profiles");
onCreate(db);
}
}
可能是您首先创建了一个表,然后在创建数据库时添加了另一个表。
如果是这种情况,请尝试更改数据库版本,因为如果版本相同,onCreate(SQLiteDatabase db)方法只调用一次。这意味着每次我要为数据库创建一个新表时,我都需要更改数据库版本吗?请参阅我更新的帖子,我正在为版本设置一个静态最终变量。所以我需要把它改成一个可变的变量,然后照你说的做?提前感谢!我认为只要调用一次并不重要,因为我在onCreate中的代码应该创建两个表。我不明白为什么只创建一个表,是的。另一种方法是完全删除数据库。@ljpv14,您是否更改了版本并再次检查?我目前正在尝试此操作,在模拟器上卸载我的应用程序并安装新的应用程序副本。因为你说我已经创建了数据库并添加了一个新表。为了删除更改版本的选项,我正在卸载并重新安装它。