2014-06-05 2 views
-3

나는 꽤 오랫동안 풀어 봤는데 문제가 있습니다. 나는 힘의 종결을 포함하여 많은 문제들을 지나쳤고, 나는 그것을 해결하는데 성공한 신에게 감사한다. 그러나 이제는 logcat에 문제가없는 단계에 도달했지만 원하는 결과에 도달하지 못했습니다. 여기 SQLite 데이터베이스에 값 추가

내 데이터베이스입니다 :

 package SQL; 


     import java.util.LinkedList; 
     import java.util.List; 
     import android.content.ContentValues; 
     import android.content.Context; 
     import android.database.Cursor; 
     import android.database.sqlite.SQLiteDatabase; 
     import android.database.sqlite.SQLiteOpenHelper; 

     public class Database extends SQLiteOpenHelper{ 






public static final String id_sub = "id_sub"; 

public final String table_sub= "subjects"; 

public static final String table_hw = "homeworks"; 
public static final String table_marks = "marks"; 
public static final String table_q = "quizzes"; 


     public static final String id_mark = "id_m"; 
     public static final String id_hw= "id_hw"; 
     public static final String id_q = "id_q"; 
     public static final String SSubject ="subject"; 
     public static final String Mark= "mark"; 
     public static final String Homework = "homework"; 
     public static final String Quiz = "quiz"; 
     public static final String name = "iSchool"; 
     public static final int version = 1; 



     public Database(Context context) { 
    super(context, name, null, version); 
    // TODO Auto-generated constructor stub 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 

    db.execSQL("CREATE TABLE "+ table_sub +" ("+id_sub +" INTEGER PRIMARY KEY 
      AUTOINCREMENT , "+ SSubject +" TEXT NOT NULL);"); 


    db.execSQL("CREATE TABLE "+ table_marks+" ("+ id_mark +" INTEGER PRIMARY KEY 
     AUTOINCREMENT , "+ Mark 
      +" TEXT NOT NULL, "+SSubject+" TEXT NOT NULL);"); 

    db.execSQL("CREATE TABLE "+ table_hw +" ("+ id_hw +" INTEGER PRIMARY KEY 
     AUTOINCREMENT , "+SSubject 
      +" TEXT NOT NULL, "+Homework+" TEXT NOT NULL) ;"); 

    db.execSQL("CREATE TABLE "+ table_q +" ("+ id_q +" INTEGER PRIMARY KEY 
     AUTOINCREMENT, " +SSubject 
      +" TEXT NOT NULL, "+Quiz+" TEXT NOT NULL) ;"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    db.execSQL("DROP TABLE IF EXISTS "+table_sub); 
    db.execSQL("DROP TABLE IF EXISTS " +table_hw); 
    db.execSQL("DROP TABLE IF EXISTS "+ table_q); 
    db.execSQL("DROP TABLE IF EXISTS "+ table_marks); 

    onCreate(db); 
     } 
     //-------------------------------------------Todo Table 
      CRUD------------------------------------\\ 
     public Subject getSubject(long subs_id){ 
      SQLiteDatabase db = this.getReadableDatabase(); 


      Cursor c = db.query(table_sub, new String[]{id_sub,SSubject}," id 
      =? ",new String[]{String.valueOf(id_sub)},null,null,null,null); 

      if(c != null){ 
       c.moveToFirst(); 
      } 
      Subject sub = new Subject(); 
      sub.setId(Integer.parseInt(c.getString(0))); 
      sub.setSubjectstr(c.getString(1)); 
      return sub; 

     } 

     public void addSubject(Subject subject){ 
       SQLiteDatabase db = this.getWritableDatabase(); 
      String sq = "SELECT*FROM "+ table_sub; 
      Cursor c = db.rawQuery(sq,null); 
      ContentValues contentValues = new ContentValues(); 
      contentValues.put(SSubject, subject.getSubjectstr()); 

      db.insert(table_sub, null , contentValues); 
      db.close(); 
     } 


     public List<Subject> getSubjects(){ 
      SQLiteDatabase db = this.getReadableDatabase(); 
      String sss = "SELECT*FROM "+ table_sub; 
      Cursor c = db.rawQuery(sss, null); 
      List<Subject> list = new LinkedList<Subject>(); 

      if(c.moveToFirst()){ 

       do{Subject sub = new Subject(); 
       sub.setId(Integer.parseInt(c.getString(0))); 
       sub.setSubjectstr(c.getString(1)); 
        list.add(sub); 
       }while(c.moveToNext()); 
      } 

      return list;     
     } 

     public int updateSub(Subject sub){ 
     SQLiteDatabase db = this.getWritableDatabase(); 

      ContentValues cv = new ContentValues(); 
      cv.put("id_sub", sub.getId()); 
      cv.put("SSubject", sub.getSubjectstr()); 


       int i = db.update(table_sub,cv , id_sub+ " =? ",new String[] 
    {String.valueOf(sub.getId())}); 
        return i; 
     } 


     public void deleteSub(Subject sub){ 
      SQLiteDatabase db = this.getWritableDatabase(); 

      db.delete(table_sub, id_sub+ " =? ",new String[]{String.valueOf 
    (sub.getId())}); 
      db.close(); 
     } 



    } 

그리고 이것은 데이터베이스를

 package com.Turki.ischool; 


     import java.util.ArrayList; 
     import java.util.List; 
     import SQL.Database; 
     import SQL.Subject; 
     import android.app.Activity; 
     import android.app.AlertDialog; 
     import android.app.ListActivity; 
     import android.content.DialogInterface; 
     import android.database.Cursor; 
     import android.database.sqlite.SQLiteDatabase; 
     import android.os.Bundle; 
     import android.view.LayoutInflater; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.view.View; 
     import android.widget.ArrayAdapter; 
     import android.widget.EditText; 
     import android.widget.ListView; 

    public class FirstRun extends Activity { 
    String subido; 
Database helper; 
Cursor c; 
EditText et; 
ListView lv; 
String subs; 
List<Subject> ss; 
SQLiteDatabase db; 
String[] fromColumns = {helper.SSubject}; 
int[] toViews = {R.id.subber}; 
AlertDialog.Builder ad; 
AlertDialog alert; 
EditText addBar; 



public void ADialog(){ 
    LayoutInflater inflater = LayoutInflater.from(this); 
    View prompt = inflater.inflate(R.layout.dialog,null); 
    AlertDialog.Builder adb = new AlertDialog.Builder(this); 
    adb.setView(prompt); 

    addBar = (EditText)prompt.findViewById(R.id.addBar); 

    adb 
    .setCancelable(true) 
    .setNeutralButton("Next", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 

     } 
    }) 
    .setPositiveButton("Add",new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
     subido = addBar.getText().toString(); 
     adder(); 

     } 
    }) 
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      dialog.cancel(); 
     } 
    }) 
    .setTitle("Add Subject"); 


    alert = adb.create(); 
    alert.show(); 
} 


public void adder() { 
    //Initialization 

    helper = new Database(this); 
    db = helper.getWritableDatabase(); 
    //Adding a Subject 
    helper.addSubject(new Subject(subido)); 

    db.close(); 
    helper.close(); 
    } 



@Override 
protected void onCreate(Bundle savedInstanceState) { 

    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.first); 

    //Initialization 

      helper = new Database(this); 
      lv = (ListView)findViewById(R.id.listView1); 
      List<Subject> list = helper.getSubjects(); 
      ArrayList<Subject> list2 = new ArrayList<Subject>(); 

      for(Subject list3 : list){ 
       list2.add(list3); 
      } 
      ArrayAdapter<Subject> aa = new ArrayAdapter<Subject>(this, 
    android.R.layout.simple_list_item_1, list2); 
      lv.setAdapter(aa); 


} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 

    getMenuInflater().inflate(R.menu.first_run, menu); 

    return super.onCreateOptionsMenu(menu); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 

    switch(item.getItemId()){ 
    case R.id.actionAdd : 
     ADialog(); 


    } 
    return super.onOptionsItemSelected(item); 
} 

     } 




     knowing that the logcat doesn't display any problem 

알림을 사용하여 내 활동 : 문제는 그 목록보기 또는 그 아무것도 표시는 항목을 추가하지 않습니다 제대로 데이터베이스에.

업데이트 : [email protected]

답변

0

matiash : 많은 시간 후를 표시하고이 같은 것을 표시 view.but 내 응용 프로그램이 실제로 목록에 결과를 표시 할 것 같다? rawQuery는 당신이 당신의 물건을 벗어나 파싱한다면 괜찮았다. 조인이나 복잡한 쿼리를 사용하려는 경우 rawQuery를 사용해야합니다.

0

감사합니다 모두하지만 oncrreate 메서드 및 adder 메서드를 읽기 메서드를 넣어 내 문제를 해결했습니다. 또한 목록에 getSubjects() 형식을 변경하고 하위 값을 사용하도록 목록을 설정합니다. getSubjectstr() 그리고 그 일을 잘.

관련 문제