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

52 篇文章 0 订阅

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值