2017-04-15 1 views
-1

안녕하세요, 데이터베이스를 사용해야하는이 응용 프로그램을 작성하고 있습니다. 데이터베이스에서 정보를 얻지 못하는 것 같습니다.sqllite 테이블에서 데이터를 가져 오는 방법

계약 클래스 :

public class SettingsContract { 
    private SettingsContract() { 

    } 

    public final class SettingsEntry implements BaseColumns { 
     public static final String TABLE_NAME = "Settings"; 
     public static final String COLUMN_NAME_LAST_REFRESH_DT = "LastRefreshDt"; 
    } 
} 

DbHelper 클래스 :

public class SettingsDbHelper extends SQLiteOpenHelper { 
    public static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = "Database.db"; 

    private static final String SQL_CREATE_ENTRIES = 
     "CREATE TABLE IF NOT EXISTS" + SettingsContract.SettingsEntry.TABLE_NAME + " (" + 
       SettingsContract.SettingsEntry._ID + " INTEGER PRIMARY KEY," + 
       SettingsContract.SettingsEntry.COLUMN_NAME_LAST_REFRESH_DT + " DATE,"; 

    private static final String SQL_DELETE_ENTRIES = 
     "DROP TABLE IF EXISTS " + SettingsContract.SettingsEntry.TABLE_NAME; 

    public SettingsDbHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(SQL_CREATE_ENTRIES); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL(SQL_DELETE_ENTRIES); 
     onCreate(db); 
    } 

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

} 

그리고 나는이 코드를 사용 여기서 이제

private SettingsDbHelper dbHelper; 

    public SettingsDataSource(Context context) { 
     this.dbHelper = new SettingsDbHelper(context); 
    } 

    public Setting getSettings() { 
     SQLiteDatabase db = this.dbHelper.getReadableDatabase(); 
     Cursor cursor = db.rawQuery("SELECT " + 
SettingsContract.SettingsEntry.COLUMN_NAME_LAST_REFRESH_DT + " FROM " 
+ SettingsContract.SettingsEntry.TABLE_NAME, null); 
... 

을 나는 rawQuery 전화 나는 다음과 같은 코드가 있습니다 이것은 로그에있는 것입니다 :

04-15 12:18:14.026 2698-2698/com.busridercluj E/SQLiteLog: 
(1) no such table: Settings 

무엇이 여기에 있습니까? 왜 테이블을 만들어야하지 않습니까?

+4

는"표를 작성하지가 존재하는 경우 " 존재하지 않는 경우 "- 추가 스파에주의하십시오. 끝 부분의 ce – pskink

+0

당신의'CREATE TABLE' 실패 ... 더 많은 logcat 보여주기 –

답변

1

테이블 만들기 쿼리가 잘못되어 테이블이 생성되지 않습니다.

private static final String SQL_CREATE_ENTRIES = 
      "CREATE TABLE IF NOT EXISTS " + SettingsContract.SettingsEntry.TABLE_NAME + " (" + 
        SettingsContract.SettingsEntry._ID + " INTEGER PRIMARY KEY," + SettingsContract.SettingsEntry.COLUMN_NAME_LAST_REFRESH_DT + " DATE);"; 



@Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d("CreateDB", "Create table sql query: " + SQL_CREATE_ENTRIES); 
     db.execSQL(SQL_CREATE_ENTRIES); 
    } 

로그 출력은 다음과 같아야합니다 CREATE TABLE IF NOT EXISTS Settings (_id INTEGER PRIMARY KEY, LastRefreshDt DATE);

-1

이 당신을 도울 수 ...

MainActivity.class

public class MainActivity extends Activity { 

DatabaseClass dbclass; 
EditText et1,et2,et3; 
Button b1,b2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    et1 = (EditText) findViewById(R.id.editText1); 
    et2 = (EditText) findViewById(R.id.editText2); 
    et3 = (EditText) findViewById(R.id.editText3); 
    b1 = (Button) findViewById(R.id.button1); 
    b2 = (Button) findViewById(R.id.button2); 
    dbclass = new DatabaseClass(this); 
    onInsert(); 
    onShow(); 

} 

public void onInsert(){ 
    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
          boolean isInserted = dbclass.InsertData(et1.getText().toString(), 
            et2.getText().toString(), 
            et3.getText().toString()); 

          if(isInserted ==true){ 
           Toast.makeText(getApplicationContext(), "data inserted", Toast.LENGTH_LONG).show(); 
          }else 
           Toast.makeText(getApplicationContext(), "data not inserted", Toast.LENGTH_LONG).show(); 

     } 
    }); 
} 

public void onShow(){ 
    b2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent in = new Intent(getApplicationContext(),ListActivity.class); 
      startActivity(in); 
      } 
    }); 
} 

에게}

도우미 클래스

> "테이블 만들기 -

}

ListActivity.class

public class ListActivity extends Activity { 

ListView l; 
DatabaseClass dba; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.thelist); 
    dba = new DatabaseClass(this); 

    l = (ListView) findViewById(R.id.listView1); 
    ViewAll(); 



} 

public void ViewAll(){ 
    Cursor res = dba.getAllData(); 
    if(res.getCount()==0){ 
     Toast.makeText(this, "no data found", Toast.LENGTH_LONG).show(); 
     return; 
    } 

    /*StringBuffer buffer = new StringBuffer(); 
    while(res.moveToNext()){ 
     buffer.append("ID"+res.getString(0)+"\n"); 
     buffer.append("NAME"+res.getString(1)+"\n"); 
     buffer.append("SURNAME"+res.getString(2)+"\n"); 
     buffer.append("PRICE"+res.getString(3)+"\n"); 
    }*/ 
    //showmessage("DATA",buffer.toString());   
    ArrayAdapter<String> adap = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,); 
    l.setAdapter(adap); 
} 

}

Adapter.class는

public class MyAdapter extends ArrayAdapter<String> { 

private final Context context; 
private final String[] values; 

public MyAdapter(Context context,String[] values) { 
    super(context, R.layout.thelist, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
    View row = inflater.inflate(R.layout.listitems, parent,false); 
    return super.getView(position, convertView, parent); 

    TextView tv1 = (TextView) row.findViewById(R.id.textname); 
    TextView tv2 = (TextView) row.findViewById(R.id.textsurname); 
    TextView tv3 = (TextView) row.findViewById(R.id.textmarks); 
} 

}

관련 문제