Java Can';t创建android sqlite数据库
我正在从事一个android项目,在尝试创建数据库时,我似乎有什么地方出错了,这是我的代码,它假设创建一个包含多个表的数据库,但它不创建任何表,请帮助我在此处找到错误:) 这是我跑完后在logcat里看到的 05-16 10:55:02.407 17033-17033/?D/AndroidRuntime:>>>>>>>>AndroidRuntimeJava Can';t创建android sqlite数据库,java,android,database,sqlite,Java,Android,Database,Sqlite,我正在从事一个android项目,在尝试创建数据库时,我似乎有什么地方出错了,这是我的代码,它假设创建一个包含多个表的数据库,但它不创建任何表,请帮助我在此处找到错误:) 这是我跑完后在logcat里看到的 05-16 10:55:02.407 17033-17033/?D/AndroidRuntime:>>>>>>>>AndroidRuntime 启动com.android.internal.os.RuntimeInit只是一个猜测,因为您还没有发布日志,但我认为您需要在表名和第一个打开的括号
启动com.android.internal.os.RuntimeInit只是一个猜测,因为您还没有发布日志,但我认为您需要在表名和第一个打开的括号之间留出一个空格。例如:
db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + " (" +
DataBase.sub_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
DataBase.sub_col2 + " TEXT NOT NULL," +
DataBase.sub_col3 + " INTEGER )"
);
db.execSQL("CREATE TABLE " + DataBase.Table_Tasks + " (" +
DataBase.Task_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
DataBase.Task_col2 + " TEXT," +
DataBase.Task_col3 + " INTEGER NOT NULL," +
DataBase.Task_col4 + " INTEGER," +
DataBase.Task_col5 + " INTEGER )"
);
db.execSQL("CREATE TABLE " + DataBase.Table_Class + " (" +
DataBase.class_Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT," +
DataBase.class_col2 + " TEXT," +
DataBase.class_Col3 + " INTEGER," +
DataBase.class_Col4 + " TEXT," +
DataBase.class_Col5 + " TEXT," +
DataBase.class_Col6 + " TEXT," +
DataBase.class_Col7 + " TEXT," +
DataBase.class_Col8 + " TEXT )"
);
编辑:还注意到,您也没有在字段名后始终添加空格。请将所有CREATE TABLE
语句转储到logcat,并尝试按上述方式对语句进行整洁的编码,以便更容易发现连接错误
db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + " ("+DataBase.sub_col1 +" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
+ DataBase.sub_col2 + " TEXT NOT NULL, " +
DataBase.sub_col3 + " INTEGER);");
db.execSQL("CREATE TABLE "+ DataBase.Table_Tasks + " ("+DataBase.Task_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
DataBase.Task_col2 + " TEXT, " +
DataBase.Task_col3 + " INTEGER NOT NULL, " +
DataBase.Task_col4 + " INTEGER, " +
DataBase.Task_col5 + " INTEGER);");
db.execSQL("CREATE TABLE " + DataBase.Table_Class + " ("+DataBase.class_Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
DataBase.class_col2 + " TEXT, " +
DataBase.class_Col3 + " INTEGER, " +
DataBase.class_Col4 + " TEXT, " +
DataBase.Class_Col5 + " TEXT, "+
DataBase.class_Col6 + " TEXT, " +
DataBase.class_Col7 + " TEXT, " +
DataBase.class_Col8 + " TEXT);");
希望这能奏效。
不在SQL语句的末尾,并且在列名之后和数据类型之前不提供空格
由于没有logcat信息,如果调用oncreate(),那么这段代码应该可以工作。如果这不起作用,请通过添加日志让我知道是否调用了onCreate()。您能在此处发布logcat错误吗?通过查看代码,我能想到的唯一一件事就是在表名和
(
在CREATE table
语句中的第一个之间留出一个空格。包括“它显示了一个错误”在内的每个问题或者类似的需要说明错误是什么。缺少空格,请检查连接的strings@MichaelDodd职位是edited@AnsamM.AbdEl-但是Rasoul仍然没有显示任何有用的信息。请查找以E/
开头的一行,其中包含由以下原因引起的短语:
以何种方式不起作用?是否可以包含logcat,以及我在上面发布的建议?(即,查找包含由
引起的的行)也适用于第4类
-去掉“分钟”结尾处的空格
db.execSQL("CREATE TABLE "+ DataBase.Table_Subject + " ("+DataBase.sub_col1 +" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
+ DataBase.sub_col2 + " TEXT NOT NULL, " +
DataBase.sub_col3 + " INTEGER);");
db.execSQL("CREATE TABLE "+ DataBase.Table_Tasks + " ("+DataBase.Task_col1 + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
DataBase.Task_col2 + " TEXT, " +
DataBase.Task_col3 + " INTEGER NOT NULL, " +
DataBase.Task_col4 + " INTEGER, " +
DataBase.Task_col5 + " INTEGER);");
db.execSQL("CREATE TABLE " + DataBase.Table_Class + " ("+DataBase.class_Col1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
DataBase.class_col2 + " TEXT, " +
DataBase.class_Col3 + " INTEGER, " +
DataBase.class_Col4 + " TEXT, " +
DataBase.Class_Col5 + " TEXT, "+
DataBase.class_Col6 + " TEXT, " +
DataBase.class_Col7 + " TEXT, " +
DataBase.class_Col8 + " TEXT);");