无法在android上添加项目到db

时间:2012-10-07 20:22:06

标签: android sqlite

我正在尝试将这些项添加到我的数据库中,但是无法理解为什么它添加的内容比我写的更多,以及为什么它不会丢弃所需的表因为CursorDb.getCount()的数量总是在增长。

一般代码:

DBAdapter dbAdper=new DBAdapter(this);
        dbAdper.open();
        Cursor CursorDb =dbAdper.getAllTitles();

        //dbAdper.dropTable();
        dbAdper.insertTitle("rsstitle", "here need to be link");
        dbAdper.insertTitle("rsstitle2", "here need to be link2");
        dbAdper.insertTitle("rsstitle3", "here need to be link3");

        int n=CursorDb.getCount();
        do
        {
            String s= CursorDb.getString(CursorDb.getColumnIndex("RssTitle"));
            list.add(s);

        }while(CursorDb.moveToNext());
        CursorDb.close();

和db的类

public class DBAdapter {

    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
            "create table titles (_id integer primary key autoincrement, "
                    + "link text not null, RssTitle text not null);";

    private final Context context; 

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) 
        {
            db.execSQL(DATABASE_CREATE);
        }

public void dropTable() throws SQLException 
    {
        //DROP TABLE IF EXISTS mydatabase.myTable
        db.execSQL("DROP TABLE IF EXISTS "+DATABASE_NAME+"."+DATABASE_TABLE);
    }
//---insert a title into the database---
public long insertTitle(String insertLink, String title) 
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(link, insertLink);
    initialValues.put(RssTitle, title);

    return db.insert(DATABASE_TABLE, null, initialValues);
}

//---retrieves all the titles---
public Cursor getAllTitles() 
{
    return db.query(DATABASE_TABLE, new String[] {
            KEY_ROWID, 
            link,
            RssTitle,
    }, 
    null, 
    null, 
    null, 
    null,
    null
            );
}

2 个答案:

答案 0 :(得分:2)

如果删除表格,则没有表格可以插入标题。那时你有错误吗? logcat中有什么?如果你的光标是打开的,我认为,表格丢失应该失败。你有没有发现任何错误?

解决方案是设计一个干净的实验,在适当的位置插入足够的日志记录/断点,卸载,重建,运行几次。每次都要分析日志(查找SQLException之类的错误!)并比较你对实际得到的结果。如果仍然不清楚,请发布您的计划和您获得的结果。

PS。此外,您需要在光标上调用moveToFirst()。插入后?

答案 1 :(得分:0)

如果错误,错误是'',只需要这样做:

db.execSQL("DROP TABLE IF EXISTS '" + DATABASE_TABLE + "'");