2016-08-04 4 views
0

사용자를 SQL 데이터베이스에 저장하지만 OnClick 이벤트에서 코드를 구현하는 방법을 파악할 수없는 Android TODO 목록 앱을 작성합니다. 여기 SQL 데이터베이스에 Edittext 입력을 저장하는 방법은 무엇입니까?

내가 그렇게하지 않으면 내 사용자가 입력 한 데이터

public class TaskContract { 
public static final String DB_NAME = "com.aziflaj.todolist.db"; 
public static final int DB_VERSION = 1; 

public class TaskEntry implements BaseColumns { 
    public static final String TABLE = "tasks"; 
    public static final String COL_TASK_TITLE = "title"; 
    public static final String COL_TASK_DESCRIPTION = "Description"; 
    public static final String COL_TASK_DATE = "date"; 
    public static final String COL_TASK_TIME = "time"; 
}} 

SQLDbHelper 코드

public class TaskDbHelper extends SQLiteOpenHelper { 

public TaskDbHelper(Context context) { 
    super(context, TaskContract.DB_NAME, null, TaskContract.DB_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String createTable = "CREATE TABLE " + TaskContract.TaskEntry.TABLE + " (" + 
      TaskContract.TaskEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      TaskContract.TaskEntry.COL_TASK_TITLE + " TEXT NOT NULL," + 
      TaskContract.TaskEntry.COL_TASK_DATE + "TEXT NOT NULL," + 
      TaskContract.TaskEntry.COL_TASK_DESCRIPTION + "TEXT NOT NULL," + 
      TaskContract.TaskEntry.COL_TASK_TIME + "TEXT NOT NULL;)"; 

    db.execSQL(createTable); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TaskContract.TaskEntry.TABLE); 
    onCreate(db); 
}} 

활동 레이아웃 코드

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    tools:context=".Dialog"> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/title_field" 
     android:layout_marginRight="20dp" 
     android:layout_marginLeft="20dp" 
     android:ems="20" 
     android:hint="Task Title" 
     android:textColorHint="@color/hint_color" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"/> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/description_field" 
     android:layout_below="@+id/title_field" 
     android:layout_marginTop="5dp" 
     android:ems="20" 
     android:hint="Task Description" 
     android:textColorHint="@color/hint_color" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"/> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="date" 
     android:hint="Date" 
     android:textColorHint="@color/hint_color" 
     android:ems="6" 
     android:id="@+id/date_field" 
     android:layout_below="@+id/description_field" 
     android:layout_alignLeft="@+id/description_field" 
     android:layout_alignStart="@+id/description_field" 
     android:layout_marginTop="35dp"/> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="time" 
     android:ems="6" 
     android:hint="Time" 
     android:textColorHint="@color/hint_color" 
     android:layout_marginRight="20dp" 
     android:id="@+id/time_field" 
     android:layout_alignTop="@+id/date_field" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="ADD" 
     android:gravity="center|right" 
     android:id="@+id/add" 
     android:onClick="Add_task" 
     android:textColor="@color/background" 
     style="?android:attr/borderlessButtonStyle" 
     android:layout_below="@+id/time_field" 
     android:textSize="16dp" 
     android:layout_marginBottom="10dp" 
     android:layout_alignRight="@+id/time_field" 
     android:layout_alignEnd="@+id/time_field" 
     android:layout_marginTop="35dp"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="CANCEL" 
     android:onClick="Cancel" 
     android:textSize="16dp" 
     android:id="@+id/cancel" 
     android:layout_marginBottom="10dp" 
     style="?android:attr/borderlessButtonStyle" 
     android:textColor="@color/background" 
     android:layout_alignTop="@+id/add" 
     android:layout_toLeftOf="@+id/add" 
     android:layout_toStartOf="@+id/add"/> 
</RelativeLayout> 

답변

1

을 저장할 SQL 데이터베이스 코드 SQLiteOpenHelper를 확장 한 클래스에 값을 전달해야합니다. 예를 들면 다음과 같습니다 (This has my 구현은 현재, 그래서 당신은 테이블에 물건을 추가하거나 당신이 그것을해야하는 경우 삭제할 수 있습니다 방법에게 필요한 것, 필드 따라) 거기에서

public class UserDatabase extends SQLiteOpenHelper { 
    public static final int database_version = 1; 


    public UserDatabase(Context context) { 
     super(context, TableInfo.DATABASE_NAME, null, database_version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase sdb) { 
      String CREATE_USER_TABLE_QUERY = "CREATE TABLE IF NOT EXISTS" + TableInfo.TALBE_NAME + "("+ TableInfo.USER_NAME + " TEXT," + TableInfo.USER_PASSWORD + " TEXT," + TableInfo.USER_AUTOLOGIN + " TEXT, " + TableInfo.SESSION_ID + " TEXT, " + TableInfo.SERVER_NAME + " TEXT);"; 
      sdb.execSQL(CREATE_USER_TABLE_QUERY); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      //This can be used if you'd like, it's not necessary though 
    } 

을 변경합니다. 다만하여 테이블에 추가 한 후

EditText item = (EditText) findViewById(R.id.item); 
String itemText = item.getText().toString(); 

그리고 : 단지와 편집 텍스트에서 텍스트를 얻을, 당신이 얻을하는 데 필요한 코드가 활동에서

public void putDataInUserTable(UserDatabase dop, String name, String pass, String autologin, String sessionId, String server) { 
    SQLiteDatabase sql = dop.getWritableDatabase(); 
    ContentValues cv = new ContentValues(); 
    cv.put(TableInfo.USER_NAME, name); 
    cv.put(TableInfo.USER_PASSWORD, pass); 
    cv.put(TableInfo.USER_AUTOLOGIN, autologin); 
    cv.put(TableInfo.SESSION_ID, sessionId); 
    cv.put(TableInfo.SERVER_NAME, server); 
    long k = sql.insert(TableInfo.TALBE_NAME, null, cv); 
} 

: 같은 것을 사용 예 :

UserDatabase db = new UserDatabase(getApplicationContext()); 
db.putDataInUserTable(*all the parameters); 
+0

SQLiteOpenHelper에 대한 몇 가지 변경 사항이 있습니까? 변경 사항에 대한 권장 사항이나 팁이 있습니까? –

+0

당신도 데이터베이스에서 읽을 뭔가가 필요할 수 있습니다 :'public Cursor getDataFromUserTable (UserDatabase dop) { SQLiteDatabase sql = dop.getReadableDatabase(); String [] columns = {TableInfo.USER_NAME, TableInfo.USER_PASSWORD, TableInfo.USER_AUTOLOGIN, TableInfo.SESSION_ID, TableInfo.SERVER_NAME}; 커서 cursor = sql.query (TableInfo.TALBE_NAME, columns, null, null, null, null, null); return cursor; } '포맷 할 수 없습니다. 죄송합니다. 잘하면 도움이됩니다. 대부분 이름을 변경하고 SQL 문이 올바른지 확인해야합니다. – Steeno

+0

putDataInUserTable 메서드를 사용하는 추가 버튼을 클릭하면 내 앱이 다운됩니다. –

관련 문제