Java 在Android中初始化表时出现问题
我有一个问题(可能是语法问题)。我正试图在SQLite的帮助下在android中创建一个表。我有一个NAME列和VALUE1到VALUE11列。但是,当我尝试运行代码时,在Logcat中出现以下错误:Java 在Android中初始化表时出现问题,java,android,database,Java,Android,Database,我有一个问题(可能是语法问题)。我正试图在SQLite的帮助下在android中创建一个表。我有一个NAME列和VALUE1到VALUE11列。但是,当我尝试运行代码时,在Logcat中出现以下错误: package nidhin.survey; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.Conte
package nidhin.survey;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
static final String TABLE = "mygrades";
static final String NAME = "name";
static final String VALUE1 = "value1";
static final String VALUE2 = "value2";
static final String VALUE3 = "value3";
static final String VALUE4 = "value4";
static final String VALUE5 = "value5";
static final String VALUE6 = "value6";
static final String VALUE7 = "value7";
static final String VALUE8 = "value8";
static final String VALUE9 = "value9";
static final String VALUE10 = "value10";
static final String VALUE11 = "value11";
DatabaseHelper(Context context)
{
super(context, "grades.sqlite", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("CREATE TABLE " + TABLE + " (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
VALUE1 + " TEXT, " + VALUE2 + " TEXT, " +VALUE3 + " TEXT, " + VALUE4 + " TEXT, " +VALUE5 + " TEXT, " +VALUE6 + " TEXT, " +VALUE7 + " TEXT, " +VALUE8 + " TEXT, " +VALUE9 + " TEXT, " +VALUE10 + " TEXT, " +
VALUE11 + " REAL);");
ContentValues cv = new ContentValues();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
// TODO Auto-generated method stub
android.util.Log.w("mygrades", "Upgrading database, this will destroy all data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}
}
有什么想法吗?正如logcat所说:“android.database.sqlite.SQLiteException:没有这样的列:value1”,我认为问题是当您创建表时,在这个段后面缺少一个空格:
03-30 02:38:16.593: E/AndroidRuntime(693): java.lang.RuntimeException: Unable to start activity ComponentInfo{nidhin.survey/nidhin.survey.Database}: android.database.sqlite.SQLiteException: no such column: value1: , while compiling: SELECT _id, name, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11 FROM mygrades
我认为应该是这样的:
" (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
试试看。自从第一次运行应用程序以来,您是否修改了表架构 如果你这样做了,那很可能是你的问题 查看您给出的代码,您仍然将DB版本设置为1,因此没有使用添加的新列重新创建表(我打赌其中一个是“value1”)
更改
super(上下文“grades.sqlite”,null,1)代码>到super(上下文,“grades.sqlite”,null,2)代码>,再次运行你的应用程序,我打赌它会成功的 哦,你的创建语句中没有“NAME”列,你看到了吗?你已经在选择语句中使用了它。是的,我现在刚刚修复了这个问题,错误仍然是你的表已经创建好了吗?或者可能没有名为“value1:”的列,我想这里没有冒号。注销你的创建字符串并选择字符串,您肯定会找到您的答案。请记录onCreate…的输出字符串。。。String s=“CREATE TABLE”+TABLE+”(_idinteger主键自动递增,+VALUE1+…;android.util.Log.d(“mygrades”,s);
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, ".