簡體   English   中英

如何在數據庫處理程序類中調用Add方法

[英]How to call an Add Method in a Database Handler Class

嘿,這是我的第一篇文章,但我絕對被困住了。 要么我不了解數據庫(我真的很想把它拍下來嘗試學習),但是我已經創建了一個基本的CRUD DBHandler類,並帶有添加平面的方法。 以及一個允許用戶輸入要保存到數據庫的信息的活動。 我真的很喜歡任何指針,提示,或者如果您可以給我看一個好的教程的話。 http://mobilesiri.com/android-sqlite-database-tutorial-using-android-studio/找到的用於構建該數據庫的教程

這是DBHandler類。

   public class DBHandler extends SQLiteOpenHelper {

//Database Version
private static final int DATABASE_VERSION = 1;
//Database Name
private static final String DATABASE_NAME = "avtoolsInfo";
//Plane info table name
private static final String TABLE_PLANES = "planeInfo";
// planes table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_TYPE = "type";
private static final String KEY_PLANE_CLASS = "plane_class";
private static final String KEY_FUEL_STYLE = "fuel_style";
private static final String KEY_NOTES = "notes";




public DBHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_PLANE_TABLE = "CREATE TABLE " + TABLE_PLANES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + KEY_TYPE + " TEXT," + KEY_PLANE_CLASS + " TEXT," + KEY_FUEL_STYLE + " TEXT," + KEY_NOTES + " TEXT" + ")";
    db.execSQL(CREATE_PLANE_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    //Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_PLANES);
    //Creating tables again
    onCreate(db);
}

// Adding a new plane
public void addPlane(PlaneInfo planeInfo)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_NAME, planeInfo.getName()); //plane name
    values.put(KEY_TYPE, planeInfo.getType()); //plane type
    values.put(KEY_PLANE_CLASS, planeInfo.getPlaneClass()); //plane class
    values.put(KEY_FUEL_STYLE, planeInfo.getFuelStyle());//plane fuel style
    values.put(KEY_NOTES, planeInfo.getNotes());//plane notes
// Inserting Row
    db.insert(TABLE_PLANES, null, values);
// Closeing Database
    db.close();

這是要添加的活動。 [編輯。 這是布局文件]

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize"
    android:orientation="vertical"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:paddingTop="60dp">

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_plane_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/input_plane_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/plane_name"
        android:maxLines="1" />

</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_plane_type"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/input_layout_plane_name">

    <EditText
        android:id="@+id/plane_type"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/plane_type" />

</android.support.design.widget.TextInputLayout>

    <TextView
        android:id="@+id/plane_class_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/input_plane_type"
        android:layout_alignParentLeft="true"
        android:text="@string/plane_class_textview"/>

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/plane_class_text"
        android:layout_below="@id/input_plane_type"
        ></Spinner>

    <TextView
        android:id="@+id/fuel_style"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner"
        android:text="@string/fueling_type_textview"/>
    <Spinner
        android:id="@+id/spinner2"
        android:layout_below="@id/spinner"
        android:layout_toRightOf="@id/fuel_style"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">


    </Spinner>





    <Button
        android:id="@+id/save_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="@string/save_button"
        android:onClick="addPlane"/>

    <android.support.design.widget.TextInputLayout
        android:id="@+id/input_plane_notes"
        android:layout_alignParentBottom="false"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner2"
        android:layout_above="@id/save_button">

        <EditText
            android:id="@+id/plane_notes"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/plane_user_notes" />

    </android.support.design.widget.TextInputLayout>

</RelativeLayout>

我真的很感謝所有幫助。

[這里是添加類的編輯]

    package com.example.jerem.avtools;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.graphics.drawable.DrawerArrowDrawable;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class AddNewPlane extends AppCompatActivity {

    Spinner spinner2;
    Spinner spinner;
    ArrayAdapter<CharSequence> adapter;
    ArrayAdapter<CharSequence> adapter2;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_new_plane);
        spinner = (Spinner) findViewById(R.id.spinner);
        adapter = ArrayAdapter.createFromResource(this,R.array.plane_class_spinner_data,android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                Toast.makeText(getBaseContext(),parent.getItemAtPosition(position)+" is selected",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        spinner2 = (Spinner) findViewById(R.id.spinner2);
        adapter2 = ArrayAdapter.createFromResource(this,R.array.fueling_styles,android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(adapter2);
    }
}

我覺得該鏈接顯示了如何使用該類...無論如何,這里

public class AddNewPlane extends AppCompatActivity {

    Spinner spinner2;
    Spinner spinner;
    ArrayAdapter<CharSequence> adapter;
    ArrayAdapter<CharSequence> adapter2;

    DBHandler dbHandler; // add field

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_new_plane);

        dbHandler = new DbHandler(this); // initialize

  } 

    public void addPlane(View view) {
        PlaneInfo plane = new PlaneInfo();

        EditText edtPlaneType = (EditText) findViewById(R.id.plane_type);
        plane.setType(edtPlaneType.getText().toString());

        // TODO: Set more properties

        dbHandler.addPlane(plane);
    }
}

關於id值,您應該return插入數據庫處理程序的結果。 這將返回插入記錄的行號。 然后,您可以由此在PlaneInfo對象上設置ID值。

旋轉器把我扔了一圈。 花了一點時間弄清楚它們,但這就是我感謝您的幫助人員。

public void addPlane(View view){
    PlaneInfo plane = new PlaneInfo();

    EditText editPlaneName = (EditText) findViewById(R.id.input_plane_name);
    plane.setType(editPlaneName.getText().toString());

    EditText editPlaneType = (EditText) findViewById(R.id.plane_type);
    plane.setType(editPlaneType.getText().toString());

    Spinner spinnerPlaneClass = (Spinner) findViewById(R.id.spinner);
    plane.setType(spinnerPlaneClass.getSelectedItem().toString());

    Spinner spinner1PlaneStyle = (Spinner) findViewById(R.id.spinner2);
    plane.setType(spinner1PlaneStyle.getSelectedItem().toString());

    EditText editPlaneNotes = (EditText) findViewById(R.id.plane_notes);
    plane.setType(editPlaneNotes.getText().toString());

    dbHandler.addPlane(plane);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM