2016-08-04 28 views
0

ユーザーをSQLデータベースに保存するアンドロイドTODOリストアプリケーションを構築しますが、OnClickイベントでコードを実装する方法を理解することはできません。ここユーザのEdittext入力をSQLデータベースに保存する方法は?

そうしないと私は私のユーザーの入力データを保存するSQLデータベースのコード

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

ですSQLiteOpenHelperを継承したクラスに値を渡す必要があります。現在の実装なので、そこから)に応じて

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 
    } 

をフィールドを変更するには、テーブル内のものを追加するか、またはあなたがそれをする必要があります時に削除することができます方法をちょうど必要があります。ただでエディットテキストからテキストを取得するには、あなたが取得する必要があり、コードを持っているあなたの活動に

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

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

そしてだけで、テーブルに追加し、このようなものを使用します例:

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); リターンカーソル。 } 'これはフォーマットできません。申し訳ありません。うまくいけば助けてくれます。ほとんどの場合、名前を変更して、SQL文が正しいことを確認するだけです。 – Steeno

+0

putDataInUserTableメソッドを使用する[追加]ボタンをクリックすると、アプリがクラッシュするようになりました –

関連する問題