单次添加我的 SQLite 应用程序显示双重结果
in single addition my SQLite app showing double result
Java
我在数据库中添加了一次数据,但它在数据库中显示了两次相同的数据,这是主要问题,我的代码没有问题。我认为插入代码有问题或者可能是我使用的版本引起的。我不知道问题出在哪里,这是我在 SQLite 上的第一个项目,我是 SQlite 的初学者
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);
}
请检查您的 addNotes
方法中的代码。
您似乎插入了两次数据:
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();
}
}
清除您应用的数据,然后注释掉:
db.insert(TableName,null,contentValues);
如果您的应用版本不是更新,请不要使用 onUpgrade
..
清理你的代码。
同时删除此行:
db.execSQL("DROP TABLE IF EXISTS " + TableName);
onCreate(db);
addNotes
应该只是 return 一个值,所以你实际上应该删除那里的 Toast。
将 Toast 移动到您实际调用的位置 addNotes
您实际上不应该将笔记保存在 SQLite 数据库中。那应该在一个文件中。那么也许您可以将文件位置保存在数据库中。
Java
我在数据库中添加了一次数据,但它在数据库中显示了两次相同的数据,这是主要问题,我的代码没有问题。我认为插入代码有问题或者可能是我使用的版本引起的。我不知道问题出在哪里,这是我在 SQLite 上的第一个项目,我是 SQlite 的初学者
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);
}
请检查您的 addNotes
方法中的代码。
您似乎插入了两次数据:
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();
}
}
清除您应用的数据,然后注释掉:
db.insert(TableName,null,contentValues);
如果您的应用版本不是更新,请不要使用 onUpgrade
..
清理你的代码。
同时删除此行:
db.execSQL("DROP TABLE IF EXISTS " + TableName);
onCreate(db);
addNotes
应该只是 return 一个值,所以你实际上应该删除那里的 Toast。
将 Toast 移动到您实际调用的位置 addNotes
您实际上不应该将笔记保存在 SQLite 数据库中。那应该在一个文件中。那么也许您可以将文件位置保存在数据库中。