我添加了2个新列到我的SQL lite数据库中,但我得到一个SQL错误,因为其中一个新列没有被创建。我读过类似错误的其他线程,并进行双重检查以确保我的拼写正确。Android数据库SQLite异常“表没有列命名”错误
这个问题似乎在我的onCreate,因为这是程序崩溃的地方,但我似乎无法弄清楚。我添加了Player_Number和Team列,但是Player_Number并没有被创建,而是一个团队。
这里是我的代码将对DBAdapter:
public class PlayerDbAdapter {
private static final String DATABASE_CREATE = "CREATE TABLE Players (_id integer primary key autoincrement, Player_Name text not null, Player_Position text not null, Player_Number text not null, Team text not null);";
private static final String DATABASE_NAME = "Score";
private static final String DATABASE_TABLE = "Players";
private static final int DATABASE_VERSION = 3;
public static final String KEY_BODY = "Player_Name";
public static final String KEY_ROWID = "_id";
public static final String KEY_TITLE = "Player_Position";
public static final String KEY_NUMBER = "Player_Number";
public static final String KEY_TEAM = "Team";
private static final String TAG = "PlayerDbAdapter";
private final Context mCtx;
private SQLiteDatabase mDb;
private DatabaseHelper mDbHelper;
public PlayerDbAdapter(Context paramContext)
{
this.mCtx = paramContext;
}
public void close()
{
this.mDbHelper.close();
}
public long createPlayers(String playerName, String playerPosition, String playerNumber, String team)
{
ContentValues localContentValues = new ContentValues();
localContentValues.put(KEY_BODY, playerName);
localContentValues.put(KEY_TITLE, playerPosition);
localContentValues.put(KEY_NUMBER, playerNumber);
localContentValues.put(KEY_TEAM, team);
try{
return this.mDb.insert("Players", null, localContentValues);
} catch (Exception e) {
Log.e("Juma", e.getMessage());
}
return 0;
}
logcat的
04-17 14:41:42.890: I/Database(407): sqlite returned: error code = 1, msg = table Players has no column named Player_Number
04-17 14:41:43.011: E/Database(407): Error inserting Player_Number=23 Team=Chester 1st Team (Men) Player_Position=Goalkeeper Player_Name=a
04-17 14:41:43.011: E/Database(407): android.database.sqlite.SQLiteException: table Players has no column named Player_Number: , while compiling: INSERT INTO Players(Player_Number, Team, Player_Position, Player_Name) VALUES(?, ?, ?, ?);
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
04-17 14:41:43.011: E/Database(407): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1422)
04-17 14:41:43.011: E/Database(407): at playerdatabase.PlayerDbAdapter.createPlayer(PlayerDbAdapter.java:46)
04-17 14:41:43.011: E/Database(407): at your.dissertation.project.SquadActivity$1.onClick(SquadActivity.java:53)
04-17 14:41:43.011: E/Database(407): at android.view.View.performClick(View.java:2485)
04-17 14:41:43.011: E/Database(407): at android.view.View$PerformClick.run(View.java:9080)
04-17 14:41:43.011: E/Database(407): at android.os.Handler.handleCallback(Handler.java:587)
04-17 14:41:43.011: E/Database(407): at android.os.Handler.dispatchMessage(Handler.java:92)
04-17 14:41:43.011: E/Database(407): at android.os.Looper.loop(Looper.java:123)
04-17 14:41:43.011: E/Database(407): at android.app.ActivityThread.main(ActivityThread.java:3647)
04-17 14:41:43.011: E/Database(407): at java.lang.reflect.Method.invokeNative(Native Method)
04-17 14:41:43.011: E/Database(407): at java.lang.reflect.Method.invoke(Method.java:507)
04-17 14:41:43.011: E/Database(407): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-17 14:41:43.011: E/Database(407): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-17 14:41:43.011: E/Database(407): at dalvik.system.NativeStart.main(Native Method)
您创建查询是错误的,你倒排表和表名 – njzk2
你有一个语法错误,如njzk2指出,使用:'CREATE TABLE玩家......'你也应该用你的静态变量,比如'DATABASE_TABLE',以帮助防止错别字。 – Sam
感谢似乎修复它 – b0w3rb0w3r