Android 尝试使用SQlite创建表时出错
我很难创建三个表并向其中插入值 SQlite查询是正确的,因为在我尝试创建三个表并向其中插入值之前,它只处理一个表 另外,我只放了GameOver类的一部分,并声明了数据类型。 谢谢你的帮助Android 尝试使用SQlite创建表时出错,android,sqlite,Android,Sqlite,我很难创建三个表并向其中插入值 SQlite查询是正确的,因为在我尝试创建三个表并向其中插入值之前,它只处理一个表 另外,我只放了GameOver类的一部分,并声明了数据类型。 谢谢你的帮助 import static com.avrahamzilberblat.battleshipfinal.Constants.COL1; import static com.avrahamzilberblat.battleshipfinal.Constants.COL2; import static com.
import static com.avrahamzilberblat.battleshipfinal.Constants.COL1;
import static com.avrahamzilberblat.battleshipfinal.Constants.COL2;
import static com.avrahamzilberblat.battleshipfinal.Constants.COL3;
import static com.avrahamzilberblat.battleshipfinal.Constants.TABLE_NAME_Easy;
import static com.avrahamzilberblat.battleshipfinal.Constants.TABLE_NAME_Hard;
import static com.avrahamzilberblat.battleshipfinal.Constants.TABLE_NAME_Normal;
import static com.avrahamzilberblat.battleshipfinal.Constants.TAG;
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context,String tableName) {
super(context, tableName, null, 5);
SQLiteDatabase dbEasy=this.getWritableDatabase();
SQLiteDatabase dbNormal=this.getWritableDatabase();
SQLiteDatabase dbHard=this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME_Hard + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Normal + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Hard + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME_Easy);
onCreate(db);
}
public boolean addData(String tableName,PlayerDetails playerDetails) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2,playerDetails.getWinnerName());
contentValues.put(COL3, playerDetails.getRatio());
long result = db.insert(tableName, null, contentValues);
//if date as inserted incorrectly it will return -1
if (result == -1) {
return false;
} else {
return true;
}
}
您正在尝试第二次创建相同的表(_Hard)。看起来你想轻松地创建。以下更改是我认为您想要的:-
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME_Easy + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Normal + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Hard + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
}
请注意,进行更改后,您需要在重新运行应用程序之前执行以下操作之一:-
- 注意:增加版本号不起作用,因为onUpGrade方法中的代码不会删除所有表
- 注:尽管上述使用文本/字符串表示困难,但使用整数(例如0表示简单,2表示正常,4表示困难)会更有效
表格名称\u Hard
,将第一条语句更改为表格名称\u Easy
卸载应用程序,以便删除数据库并重新运行。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME_Easy + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Normal + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
db.execSQL("CREATE TABLE " + TABLE_NAME_Hard + " (ID INTEGER PRIMARY KEY, " +
COL2 +" TEXT,"+COL3+" REAL)");
}