首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >另外,我的SQLite应用程序显示了双重结果

另外,我的SQLite应用程序显示了双重结果
EN

Stack Overflow用户
提问于 2021-10-04 07:19:23
回答 2查看 67关注 0票数 0

Java

我在数据库中添加了一次数据,但在数据库中显示了2次相同的数据,这是我的代码中存在的主要问题。我认为插入代码有问题,或者可能是由于我使用的版本造成的。我不知道问题出在哪里,这是我在SQLite上的第一个项目,我是SQlite的初学者

代码语言:javascript
运行
复制
Context context;
private static final String DatabaseName = "MyNotes";
private static final int DatabaseVersion = 1;

private static final String TableName = "myNotes";
private static final String ColumnId = "id";
private static final String ColumnTitle = "title";
private static final String ColumnDescription = "description";

public Database(@Nullable Context context) {
    super(context, DatabaseName, null ,DatabaseVersion );
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {

    String query = "CREATE TABLE " + TableName + " (" + ColumnId + " INTEGER PRIMARY KEY 
                   AUTOINCREMENT, " + ColumnTitle + " TEXT, " + ColumnDescription + " TEXT);";
    db.execSQL(query);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " + TableName);
    onCreate(db);
}

void addNotes(String title, String Description){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(ColumnTitle,title);
    contentValues.put(ColumnDescription,Description);

    db.insert(TableName,null,contentValues);
    
    if (db.insert(TableName,null,contentValues) == -1){
        Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(context, " Data added Successfully " , Toast.LENGTH_SHORT).show();
       }
}

Cursor readAllNotes(){
    String query = "SELECT * FROM " + TableName;
    SQLiteDatabase database = this.getReadableDatabase();

    Cursor cursor = null;

    if (database != null)
      {
        cursor=database.rawQuery(query,null);
    }
    return cursor;
}

public void deleteAllnotes() {
    SQLiteDatabase database = this.getWritableDatabase();
    String query = "DELETE FROM " + TableName;
    database.execSQL(query);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-04 08:32:50

请检查addNotes方法中的代码。

似乎您已经插入了两次数据:

代码语言:javascript
运行
复制
void addNotes(String title, String Description) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues contentValues = new ContentValues();
    contentValues.put(ColumnTitle,title);
    contentValues.put(ColumnDescription,Description);

    //db.insert(TableName,null,contentValues);
    
    if (db.insert(TableName,null,contentValues) == -1) {
        Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(context, " Data added Successfully " , Toast.LENGTH_SHORT).show();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-11-04 20:33:10

删除应用程序的数据,然后评论如下:

代码语言:javascript
运行
复制
db.insert(TableName,null,contentValues);

如果您的应用程序发布不是更新,请不要使用onUpgrade

清理你的密码。

还删除这一行:

代码语言:javascript
运行
复制
db.execSQL("DROP TABLE IF EXISTS " + TableName);
onCreate(db);

addNotes应该只返回一个值,所以实际上应该在那里删除Toast。

把演讲会移到你真正称之为addNotes的地方

实际上,不应该将笔记保存在SQLite数据库中。应该在档案里。那么也许您可以将文件位置保存在数据库中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69432226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档