Android 尝试创建SQLite表时,应用程序崩溃

Android 尝试创建SQLite表时,应用程序崩溃,android,sqlite,Android,Sqlite,当我尝试向表中添加新行时,我的应用程序不断崩溃(然后调用onCreate,因为它还不存在)。第40行是db.execSQL(创建会话表查询) 到目前为止,我的假设是查询字符串有问题,但我无法找出它是什么 这是管理数据库的类: 公共类PBMDatabaseOperations扩展了SQLiteOpenHelper{ 私有静态最终int数据库_version=1; 私有字符串CREATE_SESSIONS_TABLE_QUERY=“CREATE_TABLE”+PBMDatabaseContract.

当我尝试向表中添加新行时,我的应用程序不断崩溃(然后调用
onCreate
,因为它还不存在)。第40行是db.execSQL(创建会话表查询)

到目前为止,我的假设是查询字符串有问题,但我无法找出它是什么

这是管理数据库的类:

公共类PBMDatabaseOperations扩展了SQLiteOpenHelper{
私有静态最终int数据库_version=1;
私有字符串CREATE_SESSIONS_TABLE_QUERY=“CREATE_TABLE”+PBMDatabaseContract.SessionTable.TABLE_NAME+”(“
+PBMDatabaseContract.SessionTable.COLUMN_NAME_ID+“INT主键自动递增,”
+PBMDatabaseContract.SessionTable.COLUMN\名称\会话\类型+“文本,”
+PBMDatabaseContract.SessionTable.COLUMN\名称\桩号\级别+“文本,”
+PBMDatabaseContract.SessionTable.COLUMN\u NAME\u LIMIT\u TYPE+“TEXT,”
+PBMDatabaseContract.SessionTable.COLUMN\名称\游戏\类型+“文本,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_LOCATION+“TEXT,”
+PBMDatabaseContract.SessionTable.COLUMN\u NAME\u START\u TIME+“文本,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_END_TIME+“TEXT,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_BUY_IN+“INT,”
+PBMDatabaseContract.SessionTable.COLUMN\u NAME\u CASH\u OUT+“INT,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_NUM_OF_PLAYERS+“INT,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_POSITION_PLACED+“INT,”
+PBMDatabaseContract.SessionTable.COLUMN\u NAME\u PLACES\u PAID+“INT,”
+PBMDatabaseContract.SessionTable.COLUMN_NAME_已完成+“INT”
+ ");";
公共PBMDatabaseOperations(上下文){
super(上下文,PBMDatabaseContract.DATABASE\u名称,null,DATABASE\u版本);
Log.d(“数据库操作”,“创建数据库”);
}
@凌驾
public void onCreate(SQLiteDatabase db){
execSQL(创建会话表查询);
Log.d(“数据库操作”,“创建的表”);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
}
public void putNewCashGame(PBMDatabaseOperations dbop、字符串赌注、字符串限制、字符串游戏类型、字符串位置、字符串开始时间、整数买入){
SQLiteDatabase sqdb=dbop.getWritableDatabase();
ContentValues cv=新的ContentValues();
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u STAKE\u LEVEL,STAKE);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u LIMIT\u TYPE,LIMIT);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u GAME\u TYPE,gameType);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u LOCATION,LOCATION);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u START\u TIME,startTime);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u BUY\u IN,buyIn);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u CASH\u OUT,0);
cv.put(PBMDatabaseContract.sessionable.COLUMN\u NAME\u已完成,0);
long k=sqdb.insert(PBMDatabaseContract.SessionTable.TABLE_NAME,null,cv);
Log.d(“数据库操作”,“插入表的新行”+PBMDatabaseContract.SessionTable.table_NAME);
}
}
这是调用该方法以添加新行的方法:

createSession.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(buyIn.getText().toString().equals(“”){
Toast.makeText(v.getContext(),“买入字段不能为空”,Toast.LENGTH_LONG.show();
}
否则{
会话cg=新会话();
cg.setTakeLevel(stacks.getSelectedItem().toString());
cg.setLimitType(limitTypes.getSelectedItem().toString());
cg.setGameType(gameTypes.getSelectedItem().toString());
//TODO Location当前是一个字符串,需要是一个Location对象
//cg.setLocationName(locations.getSelectedItem().toString());
cg.setStartTime(startDate.getText().toString());
cg.setBuyIn(Integer.parseInt(buyIn.getText().toString());
//添加到数据库
PBMDatabaseOperations db=新的PBMDatabaseOperations(C);
db.putNewCashGame(db,cg.getStakeLevel(),cg.getLimitType(),cg.getGameType(),locations.getSelectedItem().toString(),cg.getStartTime(),cg.getBuyIn());
Toast.makeText(v.getContext(),“创建新的现金游戏会话”,Toast.LENGTH_LONG.show();
完成();
}
}
});
这是我试着运行它时的日志:

07-15 14:45:19.531 7107-7107/pokerbankrollmanager.com.pokerbankrollmanager D/数据库操作﹕ 数据库创建
07-15 14:45:19.534 7107-7107/pokerbankrollmanager.com.pokerbankrollmanager E/SQLiteLog﹕ (1) “创建_表”附近:语法错误
07-15 14:45:19.535 7107-7107/pokerbankrollmanager.com.pokerbankrollmanager D/AndroidRuntime﹕ 关闭虚拟机
07-15 14:45:19.535 7107-7107/pokerbankrollmanager.com.pokerbankrollmanager E/AndroidRuntime﹕ 致命异常:主
流程:pokerbankrollmanager.com.pokerbankrollmanager,PID:7107
android.database.sqlite.SQLiteException:near“CREATE_TABLE”:编译时出现语法错误(代码1):CREATE_TABLE会话(id INT主键自动递增、会话类型文本、赌注级别文本、限制类型文本、游戏类型文本、位置文本、开始时间文本、结束时间文本、买入整型、兑现整型、玩家数量整型、位置整型、位置整型、支付整型、完成整型);
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
在android.database.sqlite.SQLiteConnection.prepare
private String CREATE_SESSIONS_TABLE_QUERY = "CREATE_TABLE " + 
PBMDatabaseContract.SessionTable.TABLE_NAME + " ("