Android开发-SQLiteDemo增删改查-AndroidStudio-项目应用-里程记录

来源:互联网 发布:美工收入 编辑:程序博客网 时间:2024/06/05 03:10

manifest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.iwanghang.sqlitedemo">    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!-- 插入对话框 -->        <activity            android:name="com.iwanghang.sqlitedemo.dialog.InsertDialog"            android:theme="@android:style/Theme.Dialog" >        </activity>        <!-- 删除对话框 -->        <activity            android:name="com.iwanghang.sqlitedemo.dialog.DeleteDialog"            android:theme="@android:style/Theme.Dialog" >        </activity>        <!-- 更新对话框 -->        <activity            android:name="com.iwanghang.sqlitedemo.dialog.UpdateDialog"            android:theme="@android:style/Theme.Dialog" >        </activity>    </application></manifest>
MainActivity.java:

package com.iwanghang.sqlitedemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.Toast;import com.iwanghang.sqlitedemo.dialog.DeleteDialog;import com.iwanghang.sqlitedemo.dialog.InsertDialog;import com.iwanghang.sqlitedemo.dialog.UpdateDialog;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity implements View.OnClickListener {    private SQLiteHelper db;    private ListAdapter listAdapter;    /**     * 插入请求代码     */    private static final int INSERT_REQUESTCODE = 1;    /**     * 插入结果代码     */    private static final int INSERT_RESULTCODE = 1;    /**     * 删除请求代码     */    private static final int DELETE_REQUESTCODE = 2;    /**     * 删除结果代码     */    private static final int DELETE_RESULTCODE = 2;    /**     * 修改请求代码     */    private static final int UPDATE_REQUESTCODE = 3;    /**     * 修改结果代码     */    private static final int UPDATE_RESULTCODE = 3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        db = new SQLiteHelper(this, "mileage.db", null, 1);        init();    }    private void init() {        findViewById(R.id.btn_insert).setOnClickListener(this);        findViewById(R.id.btn_delete).setOnClickListener(this);        findViewById(R.id.btn_update).setOnClickListener(this);        findViewById(R.id.btn_query).setOnClickListener(this);        listAdapter = new ListAdapter(new ArrayList<Mileage>(), this);        findViewById(R.id.list_data, ListView.class).setAdapter(listAdapter);    }    private <T> T findViewById(int id, Class<T> c) {        return (T) findViewById(id);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_insert: // 插入                insert();                break;            case R.id.btn_delete: // 删除                delete();                break;            case R.id.btn_update: // 修改                update();                break;            case R.id.btn_query: // 查询                query();                break;        }    }    /**     * 添加     */    private void insert() {        Intent intent = new Intent(this, InsertDialog.class);        startActivityForResult(intent, INSERT_REQUESTCODE);    }    /**     * 删除     */    private void delete() {        Intent intent = new Intent(this, DeleteDialog.class);        startActivityForResult(intent, DELETE_REQUESTCODE);    }    /**     * 更新     */    private void update() {        Intent intent = new Intent(this, UpdateDialog.class);        startActivityForResult(intent, UPDATE_REQUESTCODE);    }    /**     * 查询     */    private void query() {        List<Mileage> list = db.queryAllMileage(); // 查询所有的Mileage        loadData(list); // 加载数据到ListView上面    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        switch (requestCode) {            case INSERT_REQUESTCODE:                if (resultCode == INSERT_RESULTCODE) { // 插入请求                    if (data != null) {                        db.addMileage((Mileage) data.getSerializableExtra("mileage"));                        showMessage("插入成功!");                        query();                    } else {                        showMessage("取消插入!");                    }                }                break;            case DELETE_REQUESTCODE:                if (resultCode == DELETE_RESULTCODE) { // 删除请求                    if (data != null) {                        int _id = data.getIntExtra("_id", -1);                        if (_id != -1) {                            if (db.queryMileageById(_id) != null) {                                db.deleteMileage(_id);                                showMessage("删除成功!");                                query();                            } else {                                showMessage("删除失败\t_id:" + _id + "不存在!");                            }                        } else {                            showMessage("删除失败!");                        }                    } else {                        showMessage("取消删除!");                    }                }                break;            case UPDATE_REQUESTCODE:                if (resultCode == UPDATE_RESULTCODE) { // 修改请求                    if (data != null) {                        Mileage mileage = (Mileage) data                                .getSerializableExtra("mileage");                        int _id = mileage.get_id();                        if (db.queryMileageById(mileage.get_id()) != null) {                            db.updateMileage(mileage);                            showMessage("修改成功!");                            query();                        } else {                            showMessage("修改失败\t_id:" + _id + "不存在!");                        }                    } else {                        showMessage("取消修改!");                    }                }                break;        }    }    /**     * 显示消息     *     * @param msg     *            消息     */    private void showMessage(String msg) {        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();    }    /**     * 加载数据到ListView     *     * @param list     *            Person集合     */    private void loadData(List<Mileage> list) {        listAdapter.setList(list);        listAdapter.notifyDataSetChanged(); // 刷新数据    }}
Mileage.java:

package com.iwanghang.sqlitedemo;import java.io.Serializable;/** * 里程 Mileage */public class Mileage implements Serializable {    /**     * 序列化的版本号     */    private static final long serialVersionUID = 1L;    /**     * 组件     */    private int _id;    /**     * 出发值 mileageSetOut     */    private String mileageSetOut;    /**     * 开始值 mileageStart     */    private String mileageStart;    /**     * 结束值 mileageEnd     */    private String mileageEnd;    /**     * set方法     * get方法     */    public int get_id() {        return _id;    }    public void set_id(int _id) {        this._id = _id;    }    public String getMileageSetOut() {        return mileageSetOut;    }    public void setMileageSetOut(String mileageSetOut) {        this.mileageSetOut = mileageSetOut;    }    public String getMileageStart() {        return mileageStart;    }    public void setMileageStart(String mileageStart) {        this.mileageStart = mileageStart;    }    public String getMileageEnd() {        return mileageEnd;    }    public void setMileageEnd(String mileageEnd) {        this.mileageEnd = mileageEnd;    }}
SQLiteHelper.java:

package com.iwanghang.sqlitedemo;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;import java.util.ArrayList;import java.util.List;/** * 数据库创建、更新 */public class SQLiteHelper extends SQLiteOpenHelper {    /**     * @param context     *            上下文     * @param name     *            数据库名称     * @param factory     *            游标工厂     * @param version     *            数据库版本     */    public SQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,                        int version) {        super(context, name, factory, version);    }    // 创建数据库    @Override    public void onCreate(SQLiteDatabase db) {        Log.e("SqliteHelper", "数据库创建");        String sql = "create table mileage(_id integer Primary Key autoincrement,mileageSetOut varchar(20)" +                ", mileageStart varchar(20),mileageEnd varchar(20))";        db.execSQL(sql);    }    // 数据库更新    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        Log.e("SqliteHelper", "数据库更新");    }    /**     * 添加Mileage到数据库     *     * @param mileage     *            Mileage     */    public void addMileage(Mileage mileage) {        Log.e("SqliteHelper", "插入");        SQLiteDatabase db = getWritableDatabase(); // 以读写的形式打开数据库        // 插入数据库        db.execSQL(                "insert into mileage(mileageSetOut,mileageStart,mileageEnd) values("                        + String.format("'%s'", mileage.getMileageSetOut()) + ","                        + String.format("'%s'", mileage.getMileageStart()) + ","                        + String.format("'%s'", mileage.getMileageEnd()) +                        ");"        ); // 插入数据库        db.close(); // 关闭数据库连接    }    /**     * 更新Mileage     *     * @param mileage     *            Mileage     */    public void updateMileage(Mileage mileage) {        Log.e("SqliteHelper", "更新");        SQLiteDatabase db = getWritableDatabase(); // 以读写的形式打开数据库        String sql = "update mileage set"                + " mileageSetOut=" + String.format("'%s'", mileage.getMileageSetOut())                + ",mileageStart=" + String.format("'%s'", mileage.getMileageStart())                + ",mileageEnd=" + String.format("'%s'", mileage.getMileageEnd())                + " where _id=" + mileage.get_id();        Log.e("updateMileage", sql);        db.execSQL(sql); // 更新数据库        db.close(); // 关闭数据库连接    }    /**     * 删除Mileage     *     * @param _id     *            Mileage的id     */    public void deleteMileage(int _id) {        Log.e("SqliteHelper", "删除");        SQLiteDatabase db = getWritableDatabase(); // 以读写的形式打开数据库        String sql = "_id = ?";        String wheres[] = { String.valueOf(_id) };        db.delete("mileage", sql, wheres); // 数据库删除        db.close(); // 关闭数据库    }    /**     * 查询所有的Mileage     *     * @return 所有Mileage集合     */    public List<Mileage> queryAllMileage() {        List<Mileage> list = new ArrayList<Mileage>();        SQLiteDatabase db = getReadableDatabase(); // 以只读的方式打开数据库        String sql = "select * from mileage;";        Cursor cursor = db.rawQuery(sql, null);        while (cursor.moveToNext()) {            int _id = cursor.getInt(cursor.getColumnIndex("_id"));            String mileageSetOut = cursor.getString(cursor.getColumnIndex("mileageSetOut"));            String mileageStart = cursor.getString(cursor.getColumnIndex("mileageStart"));            String mileageEnd = cursor.getString(cursor.getColumnIndex("mileageEnd"));            Mileage mileage = new Mileage();            mileage.set_id(_id);            mileage.setMileageSetOut(mileageSetOut);            mileage.setMileageStart(mileageStart);            mileage.setMileageEnd(mileageEnd);            list.add(mileage); // 添加到数组        }        cursor.close(); // 关闭游标        db.close(); // 关闭数据库        return list;    }    /**     * 根据id查询Mileage     *     * @param _id     *            id     * @return Mileage     */    public Mileage queryMileageById(int _id) {        Mileage mileage = null;        SQLiteDatabase db = getReadableDatabase(); // 以只读方式打开数据库        String[] columns = { "_id", "mileageSetOut", "mileageStart", "mileageEnd" };        String selection = "_id=?";        String[] selectionArgs = { String.valueOf(_id) };        Cursor cursor = db.query("mileage", columns, selection, selectionArgs,                null, null, null);        if (cursor.moveToNext()) {            mileage = new Mileage();            mileage.set_id(cursor.getInt(cursor.getColumnIndex("_id")));            mileage.setMileageSetOut(cursor.getString(cursor.getColumnIndex("mileageSetOut")));            mileage.setMileageSetOut(cursor.getString(cursor.getColumnIndex("mileageStart")));            mileage.setMileageEnd(cursor.getString(cursor.getColumnIndex("mileageEnd")));        }        return mileage;    }}
ListAdapter.java:

package com.iwanghang.sqlitedemo;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;public class ListAdapter extends BaseAdapter {    private List<Mileage> list;    private LayoutInflater inflater;    public ListAdapter(List<Mileage> list, Context context) {        this.list = list;        this.inflater = (LayoutInflater) context                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);    }    public void setList(List<Mileage> list) {        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        if (convertView == null)            convertView = inflater.inflate(R.layout.activity_main_list1, null);        TextView idView = (TextView) convertView.findViewById(R.id.text_id);        TextView setOutView = (TextView) convertView.findViewById(R.id.editTextSetOut);        TextView startView = (TextView) convertView.findViewById(R.id.editTextStart);        TextView endView = (TextView) convertView.findViewById(R.id.editTextEnd);        Mileage Mileage = list.get(position);        idView.setText(String.valueOf(Mileage.get_id()));        setOutView.setText(Mileage.getMileageSetOut());        startView.setText(Mileage.getMileageStart());        endView.setText(Mileage.getMileageEnd());        return convertView;    }}
InsertDialog.java:

package com.iwanghang.sqlitedemo.dialog;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.Window;import android.widget.EditText;import com.iwanghang.sqlitedemo.Mileage;import com.iwanghang.sqlitedemo.R;/** * 插入对话框 */public class InsertDialog extends Activity implements View.OnClickListener {    /**     * 插入请求代码 大于0     */    private static final int INSERT_REQUESTCODE = 1;    /**     * 出发值控件     */    private EditText setOutView;    /**     * 开始值控件     */    private EditText startView;    /**     * 结束值控件     */    private EditText endView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏        setContentView(R.layout.insert_dialog);        init();    }    private void init() {        findViewById(R.id.insert_confirm).setOnClickListener(this);        findViewById(R.id.insert_cancel).setOnClickListener(this);        setOutView = (EditText) findViewById(R.id.insert_edit_setOut);        startView = (EditText) findViewById(R.id.insert_edit_start);        endView = (EditText) findViewById(R.id.insert_edit_end);    }    @Override    public void onClick(View v) {        int id = v.getId();        switch (id) {            case R.id.insert_confirm:                confirm(); // 确认插入                break;            case R.id.insert_cancel:                cancel(); // 取消插入                break;        }    }    /**     * 确认插入     */    private void confirm() {        String mileageSetOut = String.valueOf(setOutView.getText());        String mileageStart = String.valueOf(startView.getText());        String mileageEnd = String.valueOf(endView.getText());        Mileage mileage = new Mileage();        mileage.setMileageSetOut(mileageSetOut);        mileage.setMileageStart(mileageStart);        mileage.setMileageEnd(mileageEnd);        Intent intent = new Intent();        intent.putExtra("mileage", mileage);        setResult(INSERT_REQUESTCODE, intent);        finish();    }    /**     * 取消插入     */    private void cancel() {        setResult(INSERT_REQUESTCODE);        finish();    }}
UpdateDialog.java:

package com.iwanghang.sqlitedemo.dialog;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.Window;import android.widget.EditText;import com.iwanghang.sqlitedemo.Mileage;import com.iwanghang.sqlitedemo.R;/** * 修改对话框 */public class UpdateDialog extends Activity implements View.OnClickListener {    /**     * 修改请求代码     */    private static final int UPDATE_REQUESTCODE = 3;    /**     * id控件     */    private EditText idView;    /**     * 出发值控件     */    private EditText setOutView;    /**     * 开始值控件     */    private EditText startView;    /**     * 结束值控件     */    private EditText endView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏        setContentView(R.layout.update_dialog);        init();    }    private void init() {        findViewById(R.id.update_confirm).setOnClickListener(this);        findViewById(R.id.update_cancel).setOnClickListener(this);        idView = (EditText) findViewById(R.id.update_edit_id);        setOutView = (EditText) findViewById(R.id.update_edit_setOut);        startView = (EditText) findViewById(R.id.update_edit_start);        endView = (EditText) findViewById(R.id.update_edit_end);    }    @Override    public void onClick(View v) {        int id = v.getId();        switch (id) {            case R.id.update_confirm:                confirm(); // 确认修改                break;            case R.id.update_cancel:                cancel(); // 取消修改                break;        }    }    /**     * 确认修改     */    private void confirm() {        int _id = Integer.valueOf(String.valueOf(idView.getText()));        String mileageSetOut = String.valueOf(setOutView.getText());        String mileageStart = String.valueOf(startView.getText());        String mileageEnd = String.valueOf(endView.getText());        Mileage mileage = new Mileage();        mileage.set_id(_id);        mileage.setMileageSetOut(mileageSetOut);        mileage.setMileageStart(mileageStart);        mileage.setMileageEnd(mileageEnd);        Intent intent = new Intent();        intent.putExtra("mileage", mileage);        setResult(UPDATE_REQUESTCODE, intent);        finish();    }    /**     * 取消修改     */    private void cancel() {        setResult(UPDATE_REQUESTCODE);        finish();    }}
DeleteDialog.java:

package com.iwanghang.sqlitedemo.dialog;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.Window;import android.widget.EditText;import com.iwanghang.sqlitedemo.R;/** * 删除对话框 */public class DeleteDialog extends Activity implements View.OnClickListener {    /**     * 插入请求代码     */    private static final int DELETE_REQUESTCODE = 2;    /**     * id控件     */    private EditText idView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏        setContentView(R.layout.delete_dialog);        init();    }    private void init() {        findViewById(R.id.delete_confirm).setOnClickListener(this);        findViewById(R.id.delete_cancel).setOnClickListener(this);        idView = (EditText) findViewById(R.id.delete_edit_id);    }    @Override    public void onClick(View v) {        int id = v.getId();        switch (id) {            case R.id.delete_confirm:                confirm(); // 确认删除                break;            case R.id.delete_cancel:                cancel(); // 取消删除                break;        }    }    /**     * 确认删除     */    private void confirm() {        int _id = Integer.valueOf(String.valueOf(idView.getText()));        Intent intent = new Intent();        intent.putExtra("_id", _id);        setResult(DELETE_REQUESTCODE, intent);        finish();    }    /**     * 取消删除     */    private void cancel() {        setResult(DELETE_REQUESTCODE);        finish();    }}

1 0
原创粉丝点击