2013-06-04 4 views
-1

안녕하세요 저는이 코드를 사용하여 데이터베이스에 데이터를 삽입하고 있습니다. 다른 활동에서 커서를 사용하면 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 recursively called –

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"); 

//이 값은 데이터베이스 클래스 또는 값 입력 방법입니다. 이게 당신을 돕기를 바랍니다.

+0

감사합니다. 또 다른 의심이 있습니다. 나는 table1 또는 table2를 본다. 데이터를 삽입하는 데 문제가 없습니다. 작동하고 있습니다. 동시에 두 테이블을 사용할 때 문제가 있습니다. –

+0

많은 테이블에 삽입 할 수 있습니다. 그 doesnt 문제 .. 당신은 그것을 corectly 닫아야한다. – itsrajesh4uguys

+0

나중에는 결코 좋지 않습니다. 감사합니다;) –

관련 문제