Java 仍然无法创建该表。有什么问题?

Java 仍然无法创建该表。有什么问题?,java,android,logcat,Java,Android,Logcat,这是我的数据库类 public class ProgramDbAdapter{ public static final String KEY_ROWID = "_id"; public static final String KEY_PROGRAM_TITLE = "ProgramTitle"; public static final String KEY_PROGRAM_DATE = "ProgramDate"; public static final String KEY_PROGRAM_

这是我的数据库类

public class ProgramDbAdapter{

public static final String KEY_ROWID = "_id";
public static final String KEY_PROGRAM_TITLE = "ProgramTitle";
public static final String KEY_PROGRAM_DATE = "ProgramDate";
public static final String KEY_PROGRAM_TIME = "ProgramTime";
public static final String KEY_PROGRAM_CHANNEL = "ProgramChannel";
private static final String DATABASE_CREATE =
    "CREATE TABLE " + DATABASE_TABLE + " (" + "_id integer primary key autoincrement, " 
    + "ProgramTitle text, " + "ProgramDate varchar(20), "
    + "ProgramTime varchar(20), " + "ProgramChannel text)";
private static final String DATABASE_UPGRADE = "DROP TABLE IF EXISTS " + DATABASE_TABLE;

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); 
    }

    @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(DATABASE_UPGRADE);
        onCreate(db);
    }
}
public ProgramDbAdapter open() throws SQLException{
    mDbHelper = new DatabaseHelper(mcontext);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}
public long CreateData(String ProgramTitle, String ProgramDate, String ProgramTime, String ProgramChannel){
    ContentValues initialvalues = new ContentValues();
    initialvalues.put(KEY_PROGRAM_TITLE, ProgramTitle);
    initialvalues.put(KEY_PROGRAM_DATE, ProgramDate);
    initialvalues.put(KEY_PROGRAM_TIME, ProgramTime);
    initialvalues.put(KEY_PROGRAM_CHANNEL, ProgramChannel);
    return mDb.insert(DATABASE_TABLE, null, initialvalues);
}
}
这是我的主课

public class Program extends ExpandableListActivity{
    public void onCreate(Bundle savedInstanceState) {
        mDbHelper = new ProgramDbAdapter(this);
        mDbHelper.open();
        mDbHelper.CreateData("a","a","a","a");
    }
}

当我调用open()和createdata函数时,logcat告诉我
没有这样的表:Program
。问题出在哪里?

sqlite中没有varchar类型,请参阅。请改用文本。

sqlite中没有varchar类型,请参阅。改用文本。

我看不出“数据库表”是从哪里来的

此外,应该使用“rawQuery()”、“query()”-方法或“SQLiteStatement”将参数绑定到SQL语句中


最后但并非最不重要的是,SQLite不知道任何“varchar”。在此处检查所有数据类型:

我看不出“数据库表”来自何处

此外,应该使用“rawQuery()”、“query()”-方法或“SQLiteStatement”将参数绑定到SQL语句中


最后但并非最不重要的是,SQLite不知道任何“varchar”。在此处检查所有数据类型:

varchar已转换为文本。。。 弗拉基米尔链接:

如果列的声明类型为 包含任何字符串“CHAR”, “CLOB”或“TEXT”,则该列具有 文本亲和力。请注意,类型 VARCHAR包含字符串“CHAR”和 因此,被指定为文本关联

问题是,你们在第一次运行时创建了数据库,并且有不同的创建状态


从android设置中删除应用程序数据或更改数据库版本

varchar被翻译为文本。。。 弗拉基米尔链接:

如果列的声明类型为 包含任何字符串“CHAR”, “CLOB”或“TEXT”,则该列具有 文本亲和力。请注意,类型 VARCHAR包含字符串“CHAR”和 因此,被指定为文本关联

问题是,你们在第一次运行时创建了数据库,并且有不同的创建状态


从android设置中删除应用程序数据或更改数据库版本

SQLite do know varchar。。。请参阅我的答案
private static final String DATABASE_TABLE=“Program”SQLite是否知道varchar。。。请参阅我的答案
private static final String DATABASE_TABLE=“Program”您不会被迫使用文本。。。看我的回答你不是被迫用文字。。。请看我的回答。我还是希望在创建查询中直接使用“TEXT”数据类型。因此,由于varchar,无法创建表?然而,数据库的版本也会影响结果?不,你可以使用varchar,我说你在添加db.execSQL(数据库创建)之前运行了你的应用程序;要重新创建实现(或更改数据库中的表名,请执行以下操作)。。。更改数据库\u版本将重新创建数据库。。。仅当数据库不存在时才调用onCreate。。。您需要通过更改db版本或删除数据来强制重新创建实际上我的问题是什么?我不太明白?不过,我还是宁愿在创建查询中直接使用“TEXT”-数据类型。因此,由于varchar,无法创建表?然而,数据库的版本也会影响结果?不,你可以使用varchar,我说你在添加db.execSQL(数据库创建)之前运行了你的应用程序;要重新创建实现(或更改数据库中的表名,请执行以下操作)。。。更改数据库\u版本将重新创建数据库。。。仅当数据库不存在时才调用onCreate。。。您需要通过更改db版本或删除数据来强制重新创建实际上我的问题是什么?我不太明白?可能是我解决的问题的重复列,现在这是我解决重复列后的问题,但仍然无法创建表可能是我解决的问题的重复列,在我解决了重复列但仍然无法创建表之后,这就是问题所在