我也是Android和SQLite的初学者。 我一直在尝试构建一个数据库来检索和显示项目,价格和时间等条目。 我已经浏览了所有其他主题,但我似乎无法找到它崩溃的原因。 我尝试了很多方法使它工作,但这是我试图使用的代码:
public class data extends SQLiteOpenHelper {
private static final String DATABASE_NAME ="items.db";
private static final String t="database created";
private static final int DATABASE_VERSION=1;
Context ct;
SQLiteDatabase db;
public data (Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
ct=ctx;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE record (_id primary key autoincrement,TIME text,ITEM text,TYPE text,AMT text)");
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(ct, t, duration);
toast.show();
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
db.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME);
onCreate(db);
}
}
这是我用来运行数据类对象的类
public class mainscreen extends Activity {
private data Data;
private static String[] cols={"_id","TIME","ITEM","TYPE","AMT"};
private static String ORDER_BY = TIME + "DESC";
private static int[] TO={R.id.textView5,R.id.textView3,R.id.textView,R.id.textView4,R.id.textView2};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainscreen);
Data = new data(this);
}
public void tryit(View view)
{
time t=new time();
data test =new data(this);
add(t.tostring(),"tomato", "200", "Food");
// Cursor cursor = getd();
// show(cursor);
}
private void add(String t,String item, String price,String type) {
SQLiteDatabase db = Data.getWritableDatabase();
db.execSQL("insert into "+TABLE_NAME+" values(null,'" + t + "','" + item + "','" + type + "','" + price + "')");
}
}
截至目前,我只是想让数据库显示我使用add();
添加的一些条目
OnCreate
(我使用toast来尝试查看onCreate
是否一直运行)SQLLITEDatabase
getreadabledatabase/getwritabledatabase
对象导致崩溃execSQL("create******")
方法也会导致崩溃。listview
的5-8个条目,现在正在崩溃 sob 。我似乎无法找到问题!
我不太确定如何获得stackdump/trace
如果需要请告诉我如何获得它。我已经标记了光标/适配器,因为如果数据库不起作用,没有必要让它工作。
我通过按钮使用tryit()
来启动插入...并在
SQLiteDatabase db = Data.getWritableDatabase();
我认为整个问题是因为某些原因导致数据库没有被创建,甚至使用普通db.execSQL
语句,无论是在onCreate
还是在数据中使用db
对象class和execSQL
在构造函数中崩溃了应用程序。
答案 0 :(得分:2)
你的create语句错误,你需要将INTEGER类型添加到_id,试试这个:
CREATE TABLE record (_id integer primary key autoincrement,TIME text,ITEM text,TYPE text,AMT text)