问题描述
- android报错真的不知道怎么回事,急求大神解释 ,明天要完成任务的
- java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mymail/com.example.mymail.FeedbackShow}: android.database.sqlite.SQLiteException: no such table: feedbacklist (code 1): while compiling: SELECT _id fcontent fstar FROM feedbacklist ORDER BY _id。。
关键代码如下
public DbHelper(Context context) {
this(contextDATANAME VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println(""create a Database"");
db.execSQL(""create table contantslist(_id INTEGER PRIMARY KEY AUTOINCREMENTusername varchar(20)address varchar(20))"");
db.execSQL(""create table feedbacklist(_id INTEGER PRIMARY KEY AUTOINCREMENTfcontent varchar(250)fstar float(10))"");
}@Overridepublic void onUpgrade(SQLiteDatabase db int oldVersion int newVersion) { // TODO Auto-generated method stub onCreate(db); }、、、、、、、、
DbHelper dbh=new DbHelper(FeedbackShow.this);
db=dbh.getReadableDatabase();cursor=db.query(""feedbacklist""new String[]{""_id""fcontent""fstar""}null null null null_id"");运行游标之前还可以,加上游标语句之后就不行不知道如何是好了,着急啊,求解救啊
解决方案
把VERSION改高一个版本试试,可能是代码编写顺序与程序运行的先后问题引起,数据库没创建。
可能的原因是
db.execSQL(""create table contantslist(_id INTEGER PRIMARY KEY AUTOINCREMENTusername varchar(20)address varchar(20))""); db.execSQL(""create table feedbacklist(_id INTEGER PRIMARY KEY AUTOINCREMENTfcontent varchar(250)fstar float(10))"");
上面这两条SQL是分两次写的,写完一条后运行了,然后又补上一个create table feedbacklist.。表结构变了,但版本version没有调高
解决方案二:
说没有feedbacklist 这个表。是不是你create table的时候失败了?
解决方案三:
SQLiteException: no such table 这个出错信息已经说的很明白:是没有操作的表。
先分析一下创建表,如 create table feedbacklist 是否成功吧?
在编码时,这写最好是写入异常处理,或者自己代码判断返回值。建议使用异常处理机制!
解决方案四:
SQLiteException 是否是数据库出错了啊
解决方案五:
System.out.println(""create a Database""); 日志打出来了吗?
在onCreate最后也打一条日志看看。
错误提示的是 表feedbacklist 不存在 可能表没有创建成功。
时间: 2024-12-22 09:33:15