[英]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.