2013-06-04 38 views
-1

您好我正在使用此代码插入数据到我的数据库。在另一个活动中,我使用了一个Cursor,我可以分别查看table1或table2的数据。但是,如果我同时使用,我只能看到表2的数据。无法在ContentValues中插入数据

当我使用游标来获取数据时,我看到一个是空的。我想我没有正确插入数据。

我在做什么错?

ContentValues cv = new ContentValues();

//表1

cv.put(idAttendance, 1); 
cv.put(attendPlayer, "Tiago"); 

db.insert(AttendanceTable, idAttendance, cv); 

    cv.put(idAttendance, 2); 
    cv.put(attendPlayer, "Joao"); 
    db.insert(AttendanceTable, idAttendance, cv); 


    cv.put(idAttendance, 3); 
    cv.put(attendPlayer, "Pedro"); 

    db.insert(AttendanceTable, idAttendance, cv); 

// TABLE2

cv.put(idTrainInd, 1); 
    cv.put(TIindicator, "Remate Sucesso"); 
    db.insert(TrainingIndicatorTable, idTrainInd, cv); 

    cv.put(idTrainInd, 2); 
    cv.put(TIindicator, "Remate SEM Sucesso"); 
    db.insert(TrainingIndicatorTable, idTrainInd, cv); 

仍不能保存数据。

我的班级是这样的:

public class DatabaseHelper extends SQLiteOpenHelper { 

private ... // database and tables 


public DatabaseHelper(Context context) { 
     super(context, dbName, null,33); 


} 

SQLiteDatabase db = null; 



@Override 
public void onCreate(SQLiteDatabase db) { 


//here i create all tables 
db.execSQL("CREATE TABLE ...) 


db=this.getWritableDatabase(); 


//THEN I USE THE CODE OF MY FIRST QUESTION 

ContentValues cv=new ContentValues(); 

//TABLE 1 
cv.put(idAttendance, 1); 
cv.put(attendPlayer, "Tiago"); 

db.insert(AttendanceTable, idAttendance, cv); 



cv.put(idAttendance, 2); 
cv.put(attendPlayer, "Joao"); 
db.insert(AttendanceTable, idAttendance, cv); 


cv.put(idAttendance, 3); 
cv.put(attendPlayer, "Pedro"); 

db.insert(AttendanceTable, idAttendance, cv); 


//TABLE2 

//TABLE2 
cv.put(idTrainInd, 1); 
cv.put(TIindicator, "Remate Sucesso"); 
db.insert(TrainingIndicatorTable, idTrainInd, cv); 

cv.put(idTrainInd, 2); 
cv.put(TIindicator, "Remate SEM Sucesso"); 
db.insert(TrainingIndicatorTable, idTrainInd, cv); 


//THEN I USE THIS TO RETURN GET THE DATA BUT TABLE TWO IS STILL EMPTY 

/**Get all players from local database*/ 
public Cursor getPlayers() { 

// db = this.getReadableDatabase(); 

    Cursor c=db.rawQuery("SELECT player FROM Attendancetabl", null); 

    //c.close(); 
    return c; 

} 






/**Get all players from local database*/ 
public Cursor getIndicadors() { 

    // db = this.getReadableDatabase(); 

    Cursor c=db.rawQuery("SELECT indicator FROM TrainingIndicador", null); 

    //c.close(); 


    return c; 

} 

这是第一个问题的同样的问题。

回答

0

尝试使用支持代码:

private void insertData(SQLiteDatabase base, String table, String columnHack, ContentValues values) { 
    base.beginTransaction(); 
    base.insertWithOnConflict(table, columnHack, values, SQLiteDatabase.CONFLICT_REPLACE); 
    base.setTransactionSuccessful(); 
    base.endTransaction(); 
} 

然后,只需调用,而不是你的db.insert这个代码:

insertData(db, TrainingIndicatorTable, idTrainInd, cv); 
+0

我得到这个错误:引起:java.lang.IllegalStateException:getDatabase递归地调用 –

0

的一段代码,以含量值插入会像下面。

private ContentValues initialValues; 
    initialValues = new ContentValues();      
         initialValues.put("User_ID", User_ID);      
         initialValues.put("FirstName", FirstName); 
         initialValues.put("LastName", LastName); 
         initialValues.put("UserID", UserID)); 
         initialValues.put("Password",Password1); 
         initialValues.put("Email", Email); 
         mydb.insertTitle(initialValues,"CheckLogin"); 

//这将是你的databse类或方法来插入值。希望这可以帮助你。

+0

我会试试看,谢谢,另一个疑问是,如果我可以拥有同样的类。我要么看table1或table2。我没有麻烦插入数据,这是工作,我很难在同一时间使用这两个表 –

+0

您可以插入许多表中。那没有问题..你应该正确地关闭它。 – itsrajesh4uguys

+0

比从未更好,它的工作,谢谢;) –