Несколько вставок одних и тех же данных в базу данных sqllite - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь создать простую форму CRUD на студии разработки Android.

Я могу вводить данные в базу данных, но кажется, что она забирает только texField 'county'.Таким образом, каждая запись установлена ​​на то, что было в округе textField.Я думаю, что это может быть связано с переменными элемента и объявлением, но я не вижу, что не так.Заранее спасибо.

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainDatabase extends AppCompatActivity {

    private static final String TAG = "MainDatabase";

    DatabaseHelper mDatabaseHelper;
    private Button btnAdd, btnViewData;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        editText = findViewById(R.id.editTextLast);
        editText = findViewById(R.id.editPassword);
        editText = findViewById(R.id.editPasswordConfirm);
        editText = findViewById(R.id.editPhoneNumber);
        editText = findViewById(R.id.editEmailAddress);
        editText = findViewById(R.id.editAddressLine1);
        editText = findViewById(R.id.editAddressLine2);
        editText = findViewById(R.id.postcodeUser);
        editText = findViewById(R.id.county);
        btnAdd = findViewById(R.id.btnAdd);
        btnViewData = findViewById(R.id.btnView);
        mDatabaseHelper = new DatabaseHelper(this);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String newEntry = editText.getText().toString();
                String newName = editText.getText().toString();
                Integer newPass = Integer.parseInt(editText.getText().toString());
                String newPhone = editText.getText().toString();
                String newEmail = editText.getText().toString();
                String newAdd1 = editText.getText().toString();
                String newAdd2 = editText.getText().toString();
                String newPC = editText.getText().toString();
                String newCounty = editText.getText().toString();

                if (editText.length() != 0) {
                    AddData(newEntry, newName, newPass, newPhone, newEmail, newAdd1, newAdd2, newPC, newCounty);


                    editText.setText("");
                } else {
                    toastMessage("You must put something in the text field!");
                }

            }
        });

        btnViewData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainDatabase.this, ListDataActivity.class);
                startActivity(intent);
            }
        });

    }



    public void AddData(String newEntry, String newName, Integer newPass, String newPhone, String newEmail, String newAdd1, String newAdd2, String newPC, String newCounty) {
        boolean insertData = mDatabaseHelper.addData(newEntry,newName,newPass,newPhone,newEmail,newAdd1,newAdd2,newPC,newCounty);


        if (insertData) {
            toastMessage("Data Successfully Inserted!");
        } else {
            toastMessage("Something went wrong");
        }
    }

    /**
     * customizable toast
     * @param message
     */
    private void toastMessage(String message){
        Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
    }
}

Помощник по базам данных

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

/**
 * Created by User on 2/28/2017.
 */

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String TAG = "DatabaseHelper";

    private static final String TABLE_NAME = "people_table";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";
    private static final String COL3 = "lastname";
    private static final String COL4 = "phonenumber";
    private static final String COL5 = "addressline1";
    private static final String COL6 = "addressline2";
    private static final String COL7 = "postcode";
    private static final String COL8 = "county";
    private static final String COL9 = "email";
    private static final String COL10 = "password";

    public DatabaseHelper(Context context) {
        super(context, TABLE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLE_NAME + " (" + COL1 +  " INTEGER PRIMARY KEY AUTOINCREMENT," +
                COL2 +" TEXT," +
                COL3 +" TEXT," +
                COL4 +" INTEGER," +
                COL5 +" TEXT," +
                COL6 +" TEXT,"+
                COL7 +" TEXT,"+
                COL8 +" TEXT,"+
                COL9 +" TEXT,"+
                COL10 +" TEXT" + ")";
        db.execSQL(createTable);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public boolean addData(String item, String item2, Integer item3, String item4, String item5, String item6, String item7, String item8, String item9) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL2, item);
        contentValues.put(COL3, item2);
        contentValues.put(COL4, item3);
        contentValues.put(COL5, item4);
        contentValues.put(COL6, item5);
        contentValues.put(COL7, item6);
        contentValues.put(COL8, item7);
        contentValues.put(COL9, item8);
        contentValues.put(COL10, item9);


        Log.d(TAG, "addData: Adding " + item + item2 + item3 + item4 + item5 + item6 + item7 + item8 + item9 + " to " + TABLE_NAME);

        long result = db.insert(TABLE_NAME, null, contentValues);

        //if date as inserted incorrectly it will return -1
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * Returns all the data from database
     * @return
     */
    public Cursor getData(){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM " + TABLE_NAME;
        Cursor data = db.rawQuery(query, null);
        return data;
    }

    /**
     * Returns only the ID that matches the name passed in
     * @param name
     * @return
     */
    public Cursor getItemID(String name){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT " + COL1 + " FROM " + TABLE_NAME +
                " WHERE " + COL2 + " = '" + name + "'";
        Cursor data = db.rawQuery(query, null);
        return data;
    }

    /**
     * Updates the name field
     * @param newName
     * @param id
     * @param oldName
     */
    public void updateName(String newName, int id, String oldName){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "UPDATE " + TABLE_NAME + " SET " + COL2 +
                " = '" + newName + "' WHERE " + COL1 + " = '" + id + "'" +
                " AND " + COL2 + " = '" + oldName + "'";
        Log.d(TAG, "updateName: query: " + query);
        Log.d(TAG, "updateName: Setting name to " + newName);
        db.execSQL(query);
    }

    /**
     * Delete from database
     * @param id
     * @param name
     */
    public void deleteName(int id, String name){
        SQLiteDatabase db = this.getWritableDatabase();
        String query = "DELETE FROM " + TABLE_NAME + " WHERE "
                + COL1 + " = '" + id + "'" +
                " AND " + COL2 + " = '" + name + "'";
        Log.d(TAG, "deleteName: query: " + query);
        Log.d(TAG, "deleteName: Deleting " + name + " from database.");
        db.execSQL(query);
    }

}

Просмотр

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.unn.android.loginregister.MainDatabase">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/relativeLayout1">
        <EditTextFirst
            android:layout_marginTop="100dp"
            android:textAlignment="center"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/editText"
            android:inputType="text"
            android:text="Firstname" />
        <EditText
            android:layout_marginTop="150dp"
            android:textAlignment="center"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/editTextLast"
            android:inputType="text"
            android:text="LastName" />

        <EditText
            android:layout_marginTop="200dp"
            android:id="@+id/editPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPassword"
            android:text="Password"  />

        <EditText
            android:layout_marginTop="250dp"
            android:id="@+id/editPasswordConfirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPassword"
            android:text="Confirm Password"/>

        <EditText
            android:layout_marginTop="300dp"
            android:id="@+id/editPhoneNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="phone"
            android:text="Phone"/>

        <EditText
            android:layout_marginTop="350dp"
            android:id="@+id/editEmailAddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textEmailAddress"
            android:text="Email"/>

        <EditText
            android:layout_marginTop="400dp"
            android:id="@+id/editAddressLine1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="text"
            android:text="Address Line 1" />

        <EditText
            android:layout_marginTop="450dp"
            android:id="@+id/editAddressLine2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="text"
            android:text="Address Line 2" />

        <EditText
            android:layout_marginTop="500dp"
            android:id="@+id/postcodeUser"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPostalAddress"
            android:text="Postcode" />

        <EditText
            android:layout_marginTop="550dp"
            android:id="@+id/county"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="text"
            android:text="County" />


    <!--</RelativeLayout>-->

    <!--<RelativeLayout-->

        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="0dp"-->
        <!--android:layout_below="@+id/relativeLayout1"-->
        <!--android:layout_marginTop="100dp">-->

        <Button
            android:layout_marginTop="600dp"
            android:id="@+id/btnAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="70dp"
            android:text="Add" />

        <Button
            android:layout_marginTop="650dp"
            android:id="@+id/btnView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_toRightOf="@+id/btnAdd"
            android:text="View Data" />

    </RelativeLayout>

</RelativeLayout>
</ScrollView>

1 Ответ

0 голосов
/ 28 мая 2018

Ваша проблема в том, что вы используете только одну переменную, а именно editText для всех EditText.Таким образом, единственный EditText, который эффективно используется, это страна (так как это последний EditText, назначенный переменной editText .)

Чтобы это исправить, вам нужно: -

  1. Объявите переменные для каждого из EditTexts и
  2. Установите переменные в соответствии с их конкретным EditText, и
  3. Получите значение из соответствующих переменных EditText.

Например, у вас может быть: -

public class MainDatabase extends AppCompatActivity {

    private static final String TAG = "MainDatabase";

    DatabaseHelper mDatabaseHelper;
    private Button btnAdd, btnViewData;
    private EditText 
        editText,            
        editTextLast,        //<<<< ADDED
        editPassword,        //<<<< ADDED
        editPasswordConfirm, //<<<< ADDED
        editPhoneNumber,     //<<<< ADDED
        editEmailAddress,    //<<<< ADDED
        editAddressLine1,    //<<<< ADDED
        editAddressLine2,    //<<<< ADDED
        postcodeUser,        //<<<< ADDED
        country;             //<<<< ADDED

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        editTextLast = findViewById(R.id.editTextLast); //<<<< CHANGED
        editPassword = findViewById(R.id.editPassword); //<<<< CHANGED
        editPasswordConfirm = findViewById(R.id.editPasswordConfirm); //<<<< CHANGED
        editPhoneNumber = findViewById(R.id.editPhoneNumber); //<<<< CHANGED
        editEmailAddress = findViewById(R.id.editEmailAddress); //<<<< CHANGED
        editAddressLine1 = findViewById(R.id.editAddressLine1); //<<<<CHANGED
        editAddressLine2 = findViewById(R.id.editAddressLine2); //<<<< CHANGEDX
        postcodeUser = findViewById(R.id.postcodeUser); //<<<< CHANGED
        country = findViewById(R.id.county); //<<<< CHANGED
        btnAdd = findViewById(R.id.btnAdd);
        btnViewData = findViewById(R.id.btnView);
        mDatabaseHelper = new DatabaseHelper(this);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String newEntry = editText.getText().toString();
                String newName = editTextLast.getText().toString(); //<<<< CHANGED
                Integer newPass = Integer.parseInt(editPassword.getText().toString()); //<<<< CHANGED
                String newPhone = editPhoneNumber.getText().toString(); //<<<< CHANGED
                String newEmail = editEmailAddress.getText().toString(); //<<<< CHANGED
                String newAdd1 = editAddressLine1.getText().toString(); //<<<< CHANGED
                String newAdd2 = editAddressLine2.getText().toString(); //<<<< CHANGED
                String newPC = postcodeUser.getText().toString(); //<<<< CHANGED
                String newCounty = country.getText().toString(); //<<<< CHANGED

                if (editText.length() != 0) {
                    AddData(newEntry, newName, newPass, newPhone, newEmail, newAdd1, newAdd2, newPC, newCounty);


                    editText.setText("");
                } else {
                    toastMessage("You must put something in the text field!");
                }

            }
        });

        btnViewData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainDatabase.this, ListDataActivity.class);
                startActivity(intent);
            }
        });

    }



    public void AddData(String newEntry, String newName, Integer newPass, String newPhone, String newEmail, String newAdd1, String newAdd2, String newPC, String newCounty) {
        boolean insertData = mDatabaseHelper.addData(newEntry,newName,newPass,newPhone,newEmail,newAdd1,newAdd2,newPC,newCounty);


        if (insertData) {
            toastMessage("Data Successfully Inserted!");
        } else {
            toastMessage("Something went wrong");
        }
    }

    /**
     * customizable toast
     * @param message
     */
    private void toastMessage(String message){
        Toast.makeText(this,message, Toast.LENGTH_SHORT).show();
    }
}

Примечание Вышеприведенный код является принципиальным и не был проверен.Как таковой, он может содержать некоторые ошибки.

...