2015-02-04 3 views
0

Привет Я довольно новичок в разработке Android, и я делаю простое приложение, которое позволяет пользователю вводить свои данные, и после нажатия кнопки «Сохранить» их данные сохраняются в базе данных, Я создал. Я создал класс «MyDBHandler», класс «Details» с методами getter и setter и класс «MainActivity», с которыми у меня больше всего проблем. Моя основная проблема заключается в том, что я не уверен, как вставлять данные, которые пользователь вводит в созданную мной таблицу. Мой класс MainActicity - это место, где я потерялся. Скажите/покажите мне, что я делаю неправильно. Мой код ниже, спасибо.Android SQLite, добавляющий данные в базу данных

класс MyDBHandler

package com.example.brian.organdonorapp; 

import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.database.Cursor; 
import android.content.Context; 
import android.content.ContentValues; 

public class MyDBHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "detailsDB.db"; 
public static final String TABLE_DETAILS = "details"; 
public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_FIRSTNAME = "firstname"; 
public static final String COLUMN_SURNAME = "surname"; 
public static final String COLUMN_PHONE = "phone"; 
public static final String COLUMN_EMAIL = "email"; 
public static final String COLUMN_ADDRESS1 = "address1"; 
public static final String COLUMN_ADDRESS2 = "address2"; 

// Pass database information along to superclass 
public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String query = "CREATE TABLE " + TABLE_DETAILS + "(" 
      + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + COLUMN_FIRSTNAME + " TEXT " 
      + COLUMN_SURNAME + " TEXT " 
      + COLUMN_PHONE + " TEXT " 
      + COLUMN_EMAIL + " EMAIL " 
      + COLUMN_ADDRESS1 + " TEXT" 
      + COLUMN_ADDRESS2 + " TEXT " 
      + ");"; 
    db.execSQL(query); 
} 

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

//Add a new row to the database 
public void addDetails(Details details){ 
    ContentValues values = new ContentValues(); 
    values.put(COLUMN_FIRSTNAME, details.getFirstname()); 
    values.put(COLUMN_SURNAME, details.getSurname()); 
    values.put(COLUMN_PHONE, details.getPhone()); 
    values.put(COLUMN_EMAIL, details.getEmail()); 
    values.put(COLUMN_ADDRESS1, details.getAddress1()); 
    values.put(COLUMN_ADDRESS2, details.getAddress2()); 
    SQLiteDatabase db = getWritableDatabase(); 
    db.insert(TABLE_DETAILS, null, values); 
    db.close(); 
} 
} 

Детали класса

package com.example.brian.organdonorapp; 


public class Details { 
int _id; 
String firstname; 
String surname; 
int phone; 
String email; 
String address1; 
String address2; 

// Empty constructor 
public Details(String s){ 
} 

public void set_id(int _id) { 
    this._id = _id; 
} 

public void setFirstname(String firstname) { 
    this.firstname = firstname; 
} 

public void setSurname(String surname) { 
    this.surname = surname; 
} 

public void setPhone(int phone) { 
    this.phone = phone; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public void setAddress1(String address1) { 
    this.address1 = address1; 
} 

public void setAddress2(String address2) { 
    this.address2 = address2; 
} 







public int get_id() { 
    return _id; 
} 

public String getFirstname() { 
    return firstname; 
} 

public String getSurname() { 
    return surname; 
} 

public int getPhone() { 
    return phone; 
} 

public String getEmail() { 
    return email; 
} 

public String getAddress1() { 
    return address1; 
} 

public String getAddress2() { 
    return address2; 
} 
} 

MainActivity класс

package com.example.brian.organdonorapp; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 


public class MainActivity extends ActionBarActivity { 

TextView firstName; 
EditText editTextName; 

TextView textView5; 
EditText editTextSurname; 

TextView textView4; 
EditText editTextMobile; 

TextView textView2; 
EditText editTextEmail; 

TextView textView3; 
EditText editTextAddress1; 

TextView textView6; 
EditText editTextAddress2; 

MyDBHandler dbHandler; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    firstName = (TextView) findViewById(R.id.firstName); 
    editTextName = (EditText) findViewById(R.id.editTextName); 
    textView5 = (TextView) findViewById(R.id.textView5); 
    editTextSurname = (EditText) findViewById(R.id.editTextSurname); 
    textView4 = (TextView) findViewById(R.id.textView4); 
    editTextMobile = (EditText) findViewById(R.id.editTextMobile); 
    textView2 = (TextView) findViewById(R.id.textView2); 
    editTextEmail = (EditText) findViewById(R.id.editTextEmail); 
    textView3 = (TextView) findViewById(R.id.textView3); 
    editTextAddress1 = (EditText) findViewById(R.id.editTextAddress1); 
    textView6 = (TextView) findViewById(R.id.textView6); 
    editTextAddress2 = (EditText) findViewById(R.id.editTextAddress2); 

    dbHandler = new MyDBHandler(this, null, null, 1); 
    //printDatabase(); 
} 


//Add details to the database 
public void addButtonClicked(View view){ 
    Details details = new Details(editTextName.getText().toString()); 
    Details details = new Details(editTextSurname.getText().toString()); 
    Details details = new Details(editTextMobile.getText().toString()); 
    Details details = new Details(editTextEmail.getText().toString()); 
    Details details = new Details(editTextAddress1.getText().toString()); 
    Details details = new Details(editTextAddress2.getText().toString()); 
    dbHandler.addDetails(details); 
    //printDatabase(); 
} 


} 
+0

'' ТЕКСТ "' -> '' ТЕКСТ, '' x5 – njzk2

ответ

0

Прежде всего, я думаю, что вы shoudl к этому:

public void addButtonClicked(View view){ 
    Details details = new Details(); 
    details.setName(editTextName.getText().toString()); 
    details.setSurname(editTextSurname.getText().toString()); 
    details.setMobile(editTextMobile.getText().toString()); 
    details.setEmail(editTextEmail.getText().toString()); 
    details.setAddress1(editTextAddress1.getText().toString()); 
    details.setAddress2(editTextAddress2.getText().toString()); 
    dbHandler.addDetails(details); 
} 

Кроме того, вы можете увидеть этот учебник, это поможет вам. http://www.vogella.com/tutorials/AndroidSQLite/article.html

+0

Большое спасибо, не был уверен, как это сделать, но теперь я понимаю :) – user3375184

0

Почему у ou создание нескольких объектов Details? Вам нужно создать только один экземпляр и установить все значения для этого объекта, а затем добавить его в базу данных.

Также строка, переданная в конструкторе Details, никогда не используется. Таким образом, можно удалить параметр, если вы не планируете использовать его позже.

ли это

public void addButtonClicked(View view){ 
    Details details = new Details(""); 
    details.setFirstname(editTextName.getText().toString()); 
    details.setSurname(editTextSurname.getText().toString()); 
    details.setPhone(editTextMobile.getText().toString()); 
    details.setEmail(editTextEmail.getText().toString()); 
    details.setAddress1(editTextAddress1.getText().toString()); 
    details.setAddress2(editTextAddress2.getText().toString()); 
    dbHandler.addDetails(details)); 
    //printDatabase(); 
} 
Смежные вопросы