Android SQLite数据库创建和使用实战(一)
废话不多说,Android撑死算个入门选手,刚好有点时间,随之倒腾整理下Android数据库操作。码农只需要代码和原理,理论从代码中自己感悟。小二,上代码,弄。
功能基本包含了数据库基本功能,至于运行后人机操作界面只是随便写了个布局方便测试而已。
com/jesse/dbasetest1/DbAdapter.java(用来管理数据库,简单的例子嘛,规范啥的就免了,重在说理)。
package com.jesse.dbasetest1;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* @author Jesse
* just for myself learn android SQLite.
*/
public class DbAdapter {
public static final String TAG = DbAdapter.class.getSimpleName();
private Context mContext;
public static final String KEY_ID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_AGE = "age";
public static final String KEY_SEX = "sex";
public static final String DBASE_NAME = "persons";
public static final String DBASE_TABLE = "base_info_table";
public static final int DBASE_VERSION = 1;
public static final String DBASE_CREATE = "create table base_info_table "
+ "(_id integer primary key autoincrement, "
+ "name text not null, "
+ "age text not null, "
+ "sex text not null);";
private DataBaseHelper mBaseHelper;
private SQLiteDatabase mDb;
public DbAdapter(Context context)
{
this.mContext = context;
mBaseHelper = new DataBaseHelper(mContext, DBASE_NAME, null, DBASE_VERSION);
}
public DbAdapter openDbase()
{
mDb = mBaseHelper.getWritableDatabase();
return this;
}
public void closeDbase()
{
mBaseHelper.close();
}
public long insertPersonInfo(PersonInfo person)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, person.name);
initialValues.put(KEY_AGE, person.age);
initialValues.put(KEY_SEX, person.sex);
return mDb.insert(DBASE_TABLE, null, initialValues);
}
public boolean deletePersonInfo(long rowId)
{
return (mDb.delete(DBASE_TABLE, KEY_ID + "=" + rowId, null) > 0);
}
public Cursor getAllPersonInfo()
{
return mDb.query(DBASE_TABLE, new String[]{KEY_ID,
KEY_NAME,
KEY_AGE,
KEY_SEX},
null, null, null, null, null);
}
public Cursor getPersonInfo(long rowId)
{
Cursor mCursor = mDb.query(DBASE_TABLE, new String[]{KEY_ID,
KEY_NAME,
KEY_AGE,
KEY_SEX},
KEY_ID + "=" + rowId,
null, null, null, null);
if (null != mCursor)
{
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updatePersonInfo(long rowId, PersonInfo person)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, person.name);
initialValues.put(KEY_AGE, person.age);
initialValues.put(KEY_SEX, person.sex);
return (mDb.update(DBASE_TABLE, initialValues, KEY_ID + "=" + rowId, null) > 0);
}
//-----------------------------------------------------------------
private class DataBaseHelper extends SQLiteOpenHelper{
public DataBaseHelper(Context context, String name,
CursorFactory factory, int version)
{
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DBASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to " + newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
}
com/jesse/dbasetest1/MainActivity.java(不解释,看不懂说明Android比我还次,哈哈)。
package com.jesse.dbasetest1;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Context mContext;
private EditText mNameEdTxt;
private EditText mAgeEdTxt;
private EditText mSexEdTxt;
private Button mAddBtn;
private EditText mRmIdEdTxt;
private Button mRemoveBtn;
private EditText mPersonIdEdTxt;
private TextView mOneText;
private Button mGetOneBtn;
private EditText mIdUpEdTxt;
private EditText mNameUpEdTxt;
private EditText mAgeUpEdTxt;
private EditText mSexUpEdTxt;
private Button mUpBtn;
private TextView mAllText;
private Button mGetAllBtn;
private DbAdapter mDbAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
}
private void initData()
{
mContext = MainActivity.this;
mNameEdTxt = (EditText) this.findViewById(R.id.person_name);
mAgeEdTxt = (EditText) this.findViewById(R.id.person_age);
mSexEdTxt = (EditText) this.findViewById(R.id.person_sex);
mAddBtn = (Button) this.findViewById(R.id.add_btn);
mRmIdEdTxt = (EditText) this.findViewById(R.id.person_id);
mRemoveBtn = (Button) this.findViewById(R.id.remove_btn);
mPersonIdEdTxt = (EditText) this.findViewById(R.id.get_person_id);
mOneText = (TextView) this.findViewById(R.id.one_person_info);
mGetOneBtn = (Button) this.findViewById(R.id.get_one_btn);
mIdUpEdTxt = (EditText) this.findViewById(R.id.id_up);
mNameUpEdTxt = (EditText) this.findViewById(R.id.person_name_up);
mAgeUpEdTxt = (EditText) this.findViewById(R.id.person_age_up);
mSexUpEdTxt = (EditText) this.findViewById(R.id.person_sex_up);
mUpBtn = (Button) this.findViewById(R.id.update_btn);
mAllText = (TextView) this.findViewById(R.id.all_person_info);
mGetAllBtn = (Button) this.findViewById(R.id.get_all_btn);
mAddBtn.setOnClickListener(addBtnClickListener);
mRemoveBtn.setOnClickListener(removeBtnClickListener);
mGetOneBtn.setOnClickListener(getOneBtnClickListener);
mUpBtn.setOnClickListener(upBtnClickListener);
mGetAllBtn.setOnClickListener(getAllBtnClickListener);
mDbAdapter = new DbAdapter(mContext);
mDbAdapter.openDbase();
}
OnClickListener addBtnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PersonInfo tempPerson = new PersonInfo();
tempPerson.name = mNameEdTxt.getText().toString();
tempPerson.age = mAgeEdTxt.getText().toString();
tempPerson.sex = mSexEdTxt.getText().toString();
if ((mNameEdTxt.getText()!=null)&&(mAgeEdTxt.getText()!=null)&&(mSexEdTxt.getText()!=null))
{
if (mDbAdapter.insertPersonInfo(tempPerson) >= 0)
{
Toast.makeText(mContext, "Add data to dbase successfull!", Toast.LENGTH_LONG).show();
}
}
else
{
Toast.makeText(mContext, "Please resure your input data is full ok?", Toast.LENGTH_LONG).show();
}
}
};
OnClickListener removeBtnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mRmIdEdTxt.getText()!=null)
{
if (mDbAdapter.deletePersonInfo(Integer.parseInt(mRmIdEdTxt.getText().toString())) == true)
{
Toast.makeText(mContext, "Remove data from dbase successfull!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(mContext, "Remove data from dbase failed!", Toast.LENGTH_LONG).show();
}
}
else
{
Toast.makeText(mContext, "Please resure your input id is full ok?", Toast.LENGTH_LONG).show();
}
}
};
OnClickListener getOneBtnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mPersonIdEdTxt.getText()!=null)
{
int idInPut = Integer.parseInt(mPersonIdEdTxt.getText().toString());
Cursor cursor = mDbAdapter.getPersonInfo(idInPut);
if (cursor.moveToFirst() == true)
{
PersonInfo personInfo = new PersonInfo();
String id = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ID));
personInfo.name = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_NAME));
personInfo.age = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_AGE));
personInfo.sex = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_SEX));
cursor.close();
String str = "No:"+id+",name:"+personInfo.name+",age:"+personInfo.age+",sex:"+personInfo.sex;
mOneText.setText(str);
}
else
{
Toast.makeText(mContext, "Get One data from dbase failed!", Toast.LENGTH_LONG).show();
}
}
else
{
Toast.makeText(mContext, "Please resure your input id is full ok?", Toast.LENGTH_LONG).show();
}
}
};
OnClickListener upBtnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PersonInfo tempPerson = new PersonInfo();
tempPerson.name = mNameUpEdTxt.getText().toString();
tempPerson.age = mAgeUpEdTxt.getText().toString();
tempPerson.sex = mSexUpEdTxt.getText().toString();
if (mDbAdapter.updatePersonInfo(Integer.parseInt(mIdUpEdTxt.getText().toString()), tempPerson) == true)
{
Toast.makeText(mContext, "Update data to dbase successfull!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(mContext, "Update data to dbase falied!", Toast.LENGTH_LONG).show();
}
}
};
OnClickListener getAllBtnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Cursor cursor = mDbAdapter.getAllPersonInfo();
if (cursor.moveToFirst() == true)
{
String str = "";
for (int index=0; index<cursor.getCount(); index++)
{
PersonInfo temp = new PersonInfo();
String id = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_ID));
temp.name = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_NAME));
temp.age = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_AGE));
temp.sex = cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_SEX));
str = str + "No:"+id+",name:"+temp.name+",age:"+temp.age+",sex:"+temp.sex + "\n";
cursor.moveToNext();
}
cursor.close();
mAllText.setText(str);
}
else
{
Toast.makeText(mContext, "Get All data from dbase failed!", Toast.LENGTH_LONG).show();
}
}
};
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mDbAdapter.closeDbase();
}
}
main_activity_layout.xml(不解释,看不懂说明Android比我还次,哈哈)。
<LinearLayout 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:background="@drawable/bg"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Jesse Android SQLite Person Info"
android:textColor="@android:color/holo_red_light"
android:textSize="30sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sina微博昵称:工匠若水"
android:textColor="@android:color/black"
android:textSize="15sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="10dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/person_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="name"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<EditText
android:id="@+id/person_age"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="age"
android:inputType="number"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<EditText
android:id="@+id/person_sex"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="sex"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<Button
android:id="@+id/add_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Add"
android:textColor="@android:color/holo_blue_dark"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="40dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/person_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="id"
android:inputType="number"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<TextView
android:id="@+id/temp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2" />
<Button
android:id="@+id/remove_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Remove"
android:textColor="@android:color/holo_blue_dark"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="40dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/get_person_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="id"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<TextView
android:id="@+id/one_person_info"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@android:color/white"
android:text="wait get person info!"
android:textSize="20sp" />
<Button
android:id="@+id/get_one_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Get One"
android:textColor="@android:color/holo_blue_dark"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="40dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/id_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="id of update"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<EditText
android:id="@+id/person_name_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="new name"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<EditText
android:id="@+id/person_age_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="new age"
android:inputType="number"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<EditText
android:id="@+id/person_sex_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="new sex"
android:inputType="text"
android:singleLine="true"
android:textColorHint="@android:color/darker_gray"
android:textSize="20sp" />
<Button
android:id="@+id/update_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Update"
android:textColor="@android:color/holo_blue_dark"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp"
android:layout_marginTop="40dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/all_person_info"
android:layout_width="0dp"
android:layout_height="150dp"
android:layout_weight="3"
android:background="@android:color/white"
android:text="wait get all person info!"
android:textSize="20sp" />
<Button
android:id="@+id/get_all_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Get ALL"
android:textColor="@android:color/holo_blue_dark"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
好了,至于去哪找运行后的数据库文件和上哪用啥工具查看,自己想办法吧,不解释,你懂的,easy!
好了,看懂了逐行代码的话,一运行,嗖一下,说明你已经入门鸟!没看懂逐行直接运行说明你不太适合屌丝程序猿这个行业唉,哈哈。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。