在安卓开发中默认的数据库是
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在安卓开发中默认的数据库是相关的知识,希望对你有一定的参考价值。
安卓默认的数据库是SQLite,因为SQLite具有轻量级、多种数据类型支持、安全性和高可移植性等特点,可以满足安卓应用开发的需求。此外,它是开源免费的,易于安装和维护,不会产生许可证费用。 参考技术A 安卓开发中默认使用的数据库是SQLite,它是一个轻量级的关系型数据库,不需要安装即可使用,是一种自带的数据库管理系统,内建于安卓系统中,可以为应用程序提供简单、可靠的数据存储功能。它支持标准的SQL语句,也可以在应用程序中使用API来操作数据库。它的开发者可以轻松的使用SQLite来创建、修改表,插入数据,查询和更新数据,以及从数据库中删除数据。 参考技术B 1. SQLite2. 因为SQLite是一种轻量级的关系型数据库管理系统,适合在移动设备和嵌入式系统中使用,它占用的空间小,运行速度快,而且支持标准的SQL语言,同时也可以通过Java的API操作和管理数据库。
3. 在安卓开发中,默认的数据库是SQLite,安卓提供了SQLiteOpenHelper类和ContentProvider类来帮助我们操作和管理SQLite数据库。
当然,如果需要使用其他类型的数据库,也可以在安卓中进行集成和使用。 参考技术C android 中默认的数据库是 SQLite,它是一种轻量级的关系型数据库管理系统,用于在 Android 应用程序中存储和管理应用程序数据。SQLite 通常用于处理小到中型的数据库任务,它支持 SQL 语言,并提供了一个简单易用的 API 来与 Android 应用程序进行集成 参考技术D 在安卓开发中,默认的数据库是SQLite。SQLite是一种开放源代码的关系型数据库管理系统,它具有低内存占用、嵌入式支持、无需配置等优点,能够满足安卓应用的大多数数据库需求。SQLite的核心是一个C库,它提供了一个轻量级的、简单易用的嵌入式数据库引擎,它具有跨平台、低成本、高性能、易移植等特点。
家庭记账本安卓版开发:第六天
一、成果展示
今天在昨天的基础上,做了一些完善,在数据库中添加了一列int型数据position,用于获取Spinner组件的value值对应的position值,加以保存读取,来实现将取值赋给Spinner组件的默认值,成功实现了下拉框的数据读取显示,进而实现了下拉框对应数据,也就是账目类型的修改,解决了一些bug,关于Activity的生命周期进行了调整,以避免了按返回键时会跳转回上一个画面,而不是它对应的上一级Activity,还解决了如果对数据进行多次查看详细信息,进行修改时,返回原Activity时账目不刷新,以及程序崩溃的问题。
修改信息
保存修改
再次查看
点击删除
二、明天的计划
加入筛选,模糊查询,需要学习Echart的使用,复习javaweb的知识。
三、原码展示
AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.familybook"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="家庭记账本" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.DayNight.DarkActionBar"> <activity android:name=".LoginActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".IndexActivity" android:launchMode="singleTask"/> <activity android:name=".RegisterActivity" android:launchMode="singleTask"/> <activity android:name=".AddBillActivity" android:launchMode="singleTask"/> <activity android:name=".QueryAllActivity" /> <activity android:name=".InfoActivity" android:launchMode="singleTask"/> </application> </manifest>
AddBillActivity.java
package com.example.familybook; import android.app.Activity; import android.app.DatePickerDialog; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import com.example.familybook.dao.BillDaoImpl; import com.example.familybook.dao.IBillDao; import com.example.familybook.entity.Bill; import java.sql.Date; import java.util.Calendar; public class AddBillActivity extends Activity { private int mYear; private int mMonth; private int mDay; private int mPosition; private Spinner mTypeSpin; private EditText mMoney; private TextView mDate; private EditText mRemark; private Button mAddBillBtn; private IBillDao mIBillDao; private String mTypeText; private String mUsername; private String TAG="AddBillActivity"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_addbill); // //获取登录者的用户名 Intent intent =getIntent(); mUsername =intent.getStringExtra("username"); Log.e(TAG,"使用者:"+mUsername); //获取时间 initDate(); //初始化控件 initView(); //添加监听事件 initListener(); } private void initDate() { //获取当前时间 Calendar ca = Calendar.getInstance(); mYear = ca.get(Calendar.YEAR); mMonth = ca.get(Calendar.MONTH); mDay = ca.get(Calendar.DAY_OF_MONTH); } private void initListener() { mTypeSpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { mPosition=position; mTypeText=parent.getItemAtPosition(position).toString(); Toast.makeText(AddBillActivity.this,mTypeText,Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); mDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //调用时间选择器 DatePickerDialog datePickerDialog = new DatePickerDialog(AddBillActivity.this, R.style.MyDatePickerDialogTheme, onDateSetListener, mYear, mMonth, mDay); //获取时间戳 long timeStamp = System.currentTimeMillis(); //设置可以显示的最晚的时间 datePickerDialog.getDatePicker().setMaxDate(timeStamp); //弹框 datePickerDialog.show(); } }); mAddBillBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addBill(); } }); } /** * 日期选择器对话监听 */ private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; String days; if (mMonth + 1 < 10) { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } else { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } mDate.setText(days); } }; private void addBill() { Bill bill=null; //获取账目类型 if(mTypeText==null){ //说明用户未点击按钮,选择默认首项:饮食 mTypeText="饮食"; mPosition=0; } //获取账目金额 String moneyText=mMoney.getText().toString().trim(); //获取日期 String date= mDate.getText().toString().trim(); //获取备注 String remarkText=mRemark.getText().toString().trim(); if(TextUtils.isEmpty(moneyText)){ //账目金额为空 Toast.makeText(this,"账目金额不可以为空",Toast.LENGTH_SHORT).show(); return; }else if(TextUtils.isEmpty((CharSequence) date)){ //账目日期为空 Toast.makeText(this,"账目日期不可以为空",Toast.LENGTH_SHORT).show(); return; }else { Log.e(TAG, "账户:" + mUsername); Log.e(TAG, "类型:" + mTypeText); Log.e(TAG, "类型:" + mPosition); Log.e(TAG, "金额:" + moneyText); Log.e(TAG, "日期:" + date); Log.e(TAG, "备注:" + remarkText); bill=new Bill(mUsername,mTypeText,mPosition,moneyText,date,remarkText); int rs=(int)mIBillDao.AddBill(bill); Log.e(TAG,"rs:"+rs); if (rs > -1) { //添加成功,跳回首面 Intent intent = new Intent(); setResult(2, intent); finish(); } } } private void initView() { mTypeSpin =(Spinner) this.findViewById(R.id.type_spin); mMoney =(EditText)this.findViewById(R.id.bill_money); mDate =(TextView) this.findViewById(R.id.bill_date); mRemark=(EditText)this.findViewById(R.id.bill_remark); mAddBillBtn=(Button)this.findViewById(R.id.add_bill_btn); mIBillDao =new BillDaoImpl(AddBillActivity.this); } }
InfoActivity.java
package com.example.familybook; import android.app.Activity; import android.app.DatePickerDialog; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import com.example.familybook.dao.BillDaoImpl; import com.example.familybook.dao.IBillDao; import com.example.familybook.entity.Bill; import java.util.Calendar; public class InfoActivity extends Activity { private Bill mBill; private String mUsername; private int mBillID; private int mYear; private int mMonth; private int mDay; private int mPosition; private Spinner mTypeSpin; private EditText mMoney; private TextView mDate; private EditText mRemark; private Button mUpdateBillBtn; private Button mDeleteBillBtn; private IBillDao mIBillDao; private String mTypeText; private String TAG="InfoActivity"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_info); //获取登录者的用户名 Intent intent =getIntent(); mUsername =intent.getStringExtra("username"); mBillID =intent.getIntExtra("bill_id",mBillID); Log.e(TAG,"使用者:"+mUsername); Log.e(TAG,"账单号:"+mBillID); //获取时间 initDate(); //初始化控件 initView(); //从数据库获取信息,并完成信息初始化 mBill=mIBillDao.QueryBill(mBillID); initInfo(); //添加监听事件 initListener(); } private void initInfo() { mTypeSpin.setSelection(mBill.getTypeposition()); mMoney.setText(mBill.getMoney()); mDate.setText(mBill.getDate()); mRemark.setText(mBill.getRemark()); } private void initDate() { //获取当前时间 Calendar ca = Calendar.getInstance(); mYear = ca.get(Calendar.YEAR); mMonth = ca.get(Calendar.MONTH); mDay = ca.get(Calendar.DAY_OF_MONTH); } private void initListener() { mTypeSpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { mPosition=position; mTypeText=parent.getItemAtPosition(position).toString(); Toast.makeText(InfoActivity.this,mTypeText,Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); mDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //调用时间选择器 DatePickerDialog datePickerDialog = new DatePickerDialog(InfoActivity.this, R.style.MyDatePickerDialogTheme, onDateSetListener, mYear, mMonth, mDay); //获取时间戳 long timeStamp = System.currentTimeMillis(); //设置可以显示的最晚的时间 datePickerDialog.getDatePicker().setMaxDate(timeStamp); //弹框 datePickerDialog.show(); } }); mDeleteBillBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { deleteBill(); } }); mUpdateBillBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { updateBill(); } }); } /** * 进行修改 */ private void updateBill() { Bill bill=null; //获取账目类型 //获取账目金额 String moneyText=mMoney.getText().toString().trim(); //获取日期 String date= mDate.getText().toString().trim(); //获取备注 String remarkText=mRemark.getText().toString().trim(); if(TextUtils.isEmpty(moneyText)){ //账目金额为空 Toast.makeText(this,"账目金额不可以为空",Toast.LENGTH_SHORT).show(); return; }else if(TextUtils.isEmpty((CharSequence) date)){ //账目日期为空 Toast.makeText(this,"账目日期不可以为空",Toast.LENGTH_SHORT).show(); return; }else { Log.e(TAG, "账户:" + mUsername); Log.e(TAG, "类型:" + mTypeText); Log.e(TAG, "类型:" + mPosition); Log.e(TAG, "金额:" + moneyText); Log.e(TAG, "日期:" + date); Log.e(TAG, "备注:" + remarkText); bill=new Bill(mUsername,mTypeText,mPosition, moneyText,date,remarkText); boolean rs=mIBillDao.Update(mBillID,bill); Log.e(TAG,"rs:"+rs); if (rs ) { //修改成功,跳回账页 Intent intent = new Intent(); intent.putExtra("username",mUsername); intent.setClass(this,QueryAllActivity.class); startActivity(intent); finish(); } } } /** * 进行删除 */ private void deleteBill() { boolean rs=mIBillDao.DeleteBill(mBillID); if(rs){ //删除成功,跳回账页 Intent intent = new Intent(); intent.putExtra("username",mUsername); intent.setClass(this,QueryAllActivity.class); startActivity(intent); finish(); } } /** * 日期选择器对话监听 */ private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; String days; if (mMonth + 1 < 10) { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } else { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } mDate.setText(days); } }; private void initView() { mTypeSpin =(Spinner) this.findViewById(R.id.type_spin); mMoney =(EditText)this.findViewById(R.id.bill_money); mDate =(TextView) this.findViewById(R.id.bill_date); mRemark=(EditText)this.findViewById(R.id.bill_remark); mUpdateBillBtn=(Button)this.findViewById(R.id.update_btn); mDeleteBillBtn=(Button)this.findViewById(R.id.delete_btn); mIBillDao =new BillDaoImpl(InfoActivity.this); } }
QueryAllActivity.java
package com.example.familybook; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import com.example.familybook.dao.BillDaoImpl; import com.example.familybook.dao.IBillDao; import com.example.familybook.entity.Bill; import com.example.familybook.utils.ShowBillsAdapter; import com.example.familybook.utils.ViewHolder; import java.util.List; public class QueryAllActivity extends Activity { private String mUsername; private String TAG="QueryAllActivity"; private List <Bill> mShowBills; private IBillDao mIBillDao; private SQLiteOpenHelper mBillDatabaseHelper; private ListView mShowBillList; private int mInfoCode=1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); this.setTitle("总览账目信息"); //获取登录者的用户名 Intent intent =getIntent(); mUsername =intent.getStringExtra("username"); Log.e(TAG,"使用者:"+mUsername); //初始化控件 initView(); //获取表格布局 mShowBillList=(ListView)findViewById(R.id.list_View); //获取从数据库获得的表单 mShowBills=mIBillDao.listAllBill(mUsername); //新建并配置Show ShowBillsAdapter ShowAdapter=new ShowBillsAdapter(mShowBills,this); mShowBillList.setAdapter(ShowAdapter); mShowBillList.deferNotifyDataSetChanged(); //添加事件监听 initListener(); } private void initListener() { mShowBillList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Bill bill =mShowBills.get(position); int bill_id=bill.get_id(); Intent intent=new Intent(); intent.putExtra("username",mUsername); intent.putExtra("bill_id",bill_id); intent.setClass(QueryAllActivity.this,InfoActivity.class); startActivity(intent); finish(); } }); } private void initView() { mIBillDao =new BillDaoImpl(QueryAllActivity.this); } }
BillDaoImpl.java
package com.example.familybook.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.example.familybook.database.FamilyBookDatabaseHelper; import com.example.familybook.entity.Bill; import com.example.familybook.utils.Constants; import java.util.ArrayList; import java.util.List; public class BillDaoImpl implements IBillDao { private final FamilyBookDatabaseHelper mBillDatabaseHelper; private IBillDao mIBillDao; public BillDaoImpl(Context context){ mBillDatabaseHelper=new FamilyBookDatabaseHelper(context); } /** * 添加账目 * @param bill * @return */ @Override public long AddBill(Bill bill) { SQLiteDatabase db =mBillDatabaseHelper.getWritableDatabase(); long result =-1; try { ContentValues values =new ContentValues(); values.put(Constants.BILL_TABLE_FIELD_UNAME,bill.getUsername()); values.put(Constants.BILL_TABLE_FIELD_TYPE,bill.getType()); values.put(Constants.BILL_TABLE_FIELD_TYPEP_OSITION,bill.getTypeposition()); values.put(Constants.BILL_TABLE_FIELD_MONEY,bill.getMoney()); values.put(Constants.BILL_TABLE_FIELD_DATE,bill.getDate()); values.put(Constants.BILL_TABLE_FIELD_REMARK,bill.getRemark()); result=db.insert(Constants.BILL_TABLE_NAME,null,values); }catch (Exception e){ e.printStackTrace(); }finally { db.close(); } return result; } @Override public List<Bill> listAllBill(String username) { List<Bill> bills= new ArrayList<>(); Bill bill=null; SQLiteDatabase db = mBillDatabaseHelper.getWritableDatabase(); try { String sql ="select * from "+Constants.BILL_TABLE_NAME+" where "+Constants.BILL_TABLE_FIELD_UNAME+"=? "; String[] str =new String[]{username}; Cursor cursor =db.rawQuery(sql,str); /** * 下面在库中进行具体查询,并将 */ while (cursor.moveToNext()){ /** * 将查到的数据逐一获取 */ //itop4412开发版-安卓系统卸载默认apk使用文档