2016-08-04 11 views
0

Erstellen einer androiden TODO-Liste App, die Benutzer speichert Eingabe in einer SQL-Datenbank, aber nicht in der Lage, herauszufinden, wie der Code in einem OnClick-Ereignis implementiert wird.Wie Benutzer Edittext Eingabe in SQL-Datenbank zu speichern?

hier ist die SQL-Datenbank-Code, wo ich möchte, dass meine Benutzereingabedaten

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 Code

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

Aktivität Layout-Code

<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> 

Antwort

1

speichern Wenn Sie nicht tun Wenn Sie bereits eine haben, sollten Sie die Werte an eine Klasse weitergeben, die SQLiteOpenHelper erweitert, zum Beispiel: (Dies hat meine Implementierung zur Zeit ändern, so die Felder entsprechend)

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 
    } 

Von dort müssen Sie nur eine Methode, die Sachen in der Tabelle hinzufügen oder löschen, wenn Sie es brauchen. Verwenden Sie so etwas wie folgt aus:

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

In Ihrer Tätigkeit, die den Code, den Sie zu erhalten, müssen muss, nur um den Text aus dem Bearbeiten von Text mit:

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

Und dann fügen Sie ihn einfach auf dem Tisch Verwenden Sie die Klasse, die Sie erstellt haben, Beispiel:

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

Haben einige Änderungen an der SQLiteOpenHelper, eine Empfehlung oder Tipp auf Änderungen ??? –

+0

Vielleicht brauchen Sie etwas aus der Datenbank zu lesen, ich denke auch: 'public Cursor getDataFromUserTable (UserDatabase dop) { SQLiteDatabase sql = dop.getReadableDatabase(); Zeichenfolge [] columns = {TableInfo.USER_NAME, TableInfo.USER_PASSWORD, TableInfo.USER_AUTOLOGIN, TableInfo.SESSION_ID, TableInfo.SERVER_NAME}; Cursorcursor = sql.query (TableInfo.TALBE_NAME, Spalten, null, null, null, null, null); Rückkehrcursor; } 'Ich kann das nicht formatieren, sorry. Hoffentlich hilft das. Sie müssen nur die Namen ändern und sicherstellen, dass die SQL-Anweisungen korrekt sind. – Steeno

+0

Ich habe es jetzt hinzugefügt meine App stürzt ab, wenn ich auf die Schaltfläche Hinzufügen, die putDataInUserTable Methode –

Verwandte Themen