数据未进入文本视图获取 sqlite 异常
Data is not coming in text view getting sqlite exception
我是 android 的新人,如果这个问题重复出现,我很抱歉。
我的问题是我有一个 ProjectManagerfargment,我有一个属于 employeefragment 的微调器和一些 textview,我在其中设置来自 databasehandler 方法的数据,因此,我正在选择微调器字段,并基于它在 textview 中设置值,但我越来越喜欢该列不存在,这是日期列。谢谢,请任何人给我正确的建议。
这是我的数据库初始化,table创建和方法代码
private static final String KEY_TASKID1 = "idtask1";
private static final String KEY_TASKNAME1 = "taskname1";
private static final String KEY_TASKEID1 = "taskeid1";
private static final String KEY_TASKPID1 = "taskpid1";
public static final String KEY_STARTDATE1 = "startdate";
public static final String KEY_ENDDATE1 = "enddate1";
String CREATE_TASKS_TABLE = "CREATE TABLE " + TABLE_TASKS + "("
+ KEY_TASKID1 + " INTEGER PRIMARY KEY," + KEY_TASKNAME1 + " TEXT,"
+ KEY_TASKEID1 + " TEXT," + KEY_TASKPID1 + " TEXT," + KEY_STARTDATE1 + "TEXT," + KEY_ENDDATE1 +"TEXT"+ ")";
public Task getProjectmanagerName(String id) {
SQLiteDatabase db = this.getWritableDatabase();
Task task = new Task();
String query ="SELECT " + KEY_TASKNAME1 +", " +KEY_TASKPID1 +","+ KEY_STARTDATE1 +","+ KEY_ENDDATE1 +" FROM " + TABLE_TASKS+ " WHERE " + KEY_TASKEID1 + "=" + id;
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
task.setName(cursor.getString(0));
task.setPid(cursor.getString(1));
task.setStartdate(cursor.getString(2));
task.setEnddate(cursor.getString(3));
} while (cursor.moveToNext());
}
return task;
}
这是我的片段class代码
m_name.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
selectedManager =Integer.toString(((Employee)con.get(position)).getID());
Log.i("projectid",selectedManager);
task=db.getProjectmanagerName(selectedManager);
manager.setText(task.getName());
project.setText(task.getPid());
start.setText(task.getStartdate());
end.setText(task.getEnddate());
}
这个来自日志猫
01-10 05:58:37.889: E/AndroidRuntime(1839): android.database.sqlite.SQLiteException: no such column: startdate (code 1): , while compiling: SELECT taskname1, taskpid1,startdate,enddate FROM Task WHERE taskeid1=1
改变这个
public static final String KEY_STARTDATE1 = "startdate1";
至
public static final String KEY_STARTDATE1 = "startdate";
如果错误仍然存在,请更新数据库版本并重新运行。
您在这里缺少一些空格:
KEY_STARTDATE1 + "TEXT," + KEY_ENDDATE1 +"TEXT"+ ")";
改为
KEY_STARTDATE1 + " TEXT," + KEY_ENDDATE1 +" TEXT"+ ")";
并卸载您的应用程序以便重新创建数据库。
我是 android 的新人,如果这个问题重复出现,我很抱歉。 我的问题是我有一个 ProjectManagerfargment,我有一个属于 employeefragment 的微调器和一些 textview,我在其中设置来自 databasehandler 方法的数据,因此,我正在选择微调器字段,并基于它在 textview 中设置值,但我越来越喜欢该列不存在,这是日期列。谢谢,请任何人给我正确的建议。
这是我的数据库初始化,table创建和方法代码
private static final String KEY_TASKID1 = "idtask1";
private static final String KEY_TASKNAME1 = "taskname1";
private static final String KEY_TASKEID1 = "taskeid1";
private static final String KEY_TASKPID1 = "taskpid1";
public static final String KEY_STARTDATE1 = "startdate";
public static final String KEY_ENDDATE1 = "enddate1";
String CREATE_TASKS_TABLE = "CREATE TABLE " + TABLE_TASKS + "("
+ KEY_TASKID1 + " INTEGER PRIMARY KEY," + KEY_TASKNAME1 + " TEXT,"
+ KEY_TASKEID1 + " TEXT," + KEY_TASKPID1 + " TEXT," + KEY_STARTDATE1 + "TEXT," + KEY_ENDDATE1 +"TEXT"+ ")";
public Task getProjectmanagerName(String id) {
SQLiteDatabase db = this.getWritableDatabase();
Task task = new Task();
String query ="SELECT " + KEY_TASKNAME1 +", " +KEY_TASKPID1 +","+ KEY_STARTDATE1 +","+ KEY_ENDDATE1 +" FROM " + TABLE_TASKS+ " WHERE " + KEY_TASKEID1 + "=" + id;
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
task.setName(cursor.getString(0));
task.setPid(cursor.getString(1));
task.setStartdate(cursor.getString(2));
task.setEnddate(cursor.getString(3));
} while (cursor.moveToNext());
}
return task;
}
这是我的片段class代码
m_name.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
selectedManager =Integer.toString(((Employee)con.get(position)).getID());
Log.i("projectid",selectedManager);
task=db.getProjectmanagerName(selectedManager);
manager.setText(task.getName());
project.setText(task.getPid());
start.setText(task.getStartdate());
end.setText(task.getEnddate());
}
这个来自日志猫
01-10 05:58:37.889: E/AndroidRuntime(1839): android.database.sqlite.SQLiteException: no such column: startdate (code 1): , while compiling: SELECT taskname1, taskpid1,startdate,enddate FROM Task WHERE taskeid1=1
改变这个
public static final String KEY_STARTDATE1 = "startdate1";
至
public static final String KEY_STARTDATE1 = "startdate";
如果错误仍然存在,请更新数据库版本并重新运行。
您在这里缺少一些空格:
KEY_STARTDATE1 + "TEXT," + KEY_ENDDATE1 +"TEXT"+ ")";
改为
KEY_STARTDATE1 + " TEXT," + KEY_ENDDATE1 +" TEXT"+ ")";
并卸载您的应用程序以便重新创建数据库。