当前位置: 首页 > news >正文

android-实例1-数据库sqlite(依赖sqlite)

1.将事先准备好的数据库模板放在model的资源文件夹中

2 权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

3.依赖

4.先键一个类MySQLiteHelper.java

功能:

识别系统路径下是否存在SQLite数据库 (/data/user/0/com.example.testa/databases/data.db)
如果没有,将工程下 文件夹res-raw-data.db复制到系统该路径。

import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.rx.mytest1.R; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; public class MySQLiteHelper { static String TAG = "MySQLiteHelper"; private Context context; static String fileName = "data.db"; //=========================================== public static SQLiteDatabase getDatabase(Context context){ String TAG = context.getClass().getName(); try{ //String path0 = context.getApplicationContext().getFilesDir().getAbsolutePath(); File filePath = context.getDatabasePath(fileName); //data/user/0/com.example.testa/databases/data.db if(!filePath.exists()){ Log.e(TAG, "getDatabase: 从raw中复制文件到 " + filePath.toString()); try{ InputStream is = context.getResources().openRawResource(R.raw.data); FileOutputStream fos = new FileOutputStream(filePath); byte[] buffer = new byte[8192]; int count = 0; while ((count= is.read(buffer)) > 0){ fos.write(buffer, 0,count); } fos.close(); is.close(); }catch (Exception e){ Log.e(TAG, "getDatabase错误1: "+ e) ; } } else{ Log.e(TAG, "getDatabase: 数据库已存在"); } SQLiteDatabase mysql = SQLiteDatabase.openOrCreateDatabase(filePath,null); return mysql; }catch (Exception e){ Log.e(TAG, "getDatabase错误1: "+ e) ; e.printStackTrace(); } return null; } }

5. 新建工具类 SQliteManager_Curve.java

public class SQliteManager_Curve { protected String tabel_name = "YZK_2603_curve_list"; String TAG = getClass().getName(); Context context; 方法1 方法1 。。。。。略 }

5.1 插入数据 (SQliteManager_Curve.java类中的方法)

insertData();

public void insertData(BeanYZKCurve bean) { SQLiteDatabase db = MySQLiteHelper.getDatabase(context); ContentValues values = contentValuesLoadData(bean); db.insert(tabel_name, null, values);//执行插入操作 } private ContentValues contentValuesLoadData(BeanYZKCurve bean){ ContentValues values = new ContentValues(); values.put("curveId", bean.getCurveId()); values.put("productId", bean.getProductId()); values.put("productName", bean.getProductName()); values.put("agrochemicaleId", bean.getAgrochemicaleId()); values.put("agrochemicaleName",bean.getAgrochemicaleName()); values.put("agrochemicaleNo", bean.getAgrochemicaleNo()); values.put("matrix", bean.getMatrix()); values.put("diluent", bean.getDiluent()); values.put("cardType", bean.getCardType()); values.put("algorithm", bean.getAlgorithm()); //节省空间 略 return values; }

5.2 读数据 (SQliteManager_Curve.java类中的方法)

read();

public ArrayList<BeanYZKCurve> read(String str){ //单条件模糊查询(多列查询)(如 str=”H” “name”列 或 “type”列 或 “fristPY”列 // 中有 “h”相关字的都将查询出来,(如h hh h1)) Cursor cursor; ArrayList<BeanYZKCurve> listBeans = new ArrayList<>(); SQLiteDatabase db = MySQLiteHelper.getDatabase(context); //--------------------------------------- String[] columns = null; //String selection ="company_name like '%"+ str+"%'"+ " or first_letter like '%"+ str+"%'"; String selection = null; String[] selectionArgs = null; cursor=db.query(tabel_name, columns, selection, selectionArgs, null, null, null); //--------------------------------------- while (cursor.moveToNext()){ listBeans.add(BeanSetData(cursor)); } if(cursor!=null)cursor.close(); //--------------------------------------- return listBeans; } private BeanYZKCurve BeanSetData(Cursor c){ BeanYZKCurve bean = new BeanYZKCurve(); //int id = c.getInt(c.getColumnIndex("id")); //bean.set_id(String.valueOf(id)); bean.setCurveId(c.getInt(c.getColumnIndex("curveId"))); bean.setProductId(c.getInt(c.getColumnIndex("productId"))); bean.setProductName(c.getString(c.getColumnIndex("productName"))); bean.setAgrochemicaleId(c.getInt(c.getColumnIndex("agrochemicaleId"))); bean.setAgrochemicaleName(c.getString(c.getColumnIndex("agrochemicaleName"))); bean.setAgrochemicaleNo(c.getInt(c.getColumnIndex("agrochemicaleNo"))); bean.setMatrix(c.getInt(c.getColumnIndex("matrix"))); bean.setDiluent(c.getInt(c.getColumnIndex("diluent"))); bean.setCardType(c.getInt(c.getColumnIndex("cardType"))); bean.setAlgorithm(c.getInt(c.getColumnIndex("algorithm"))); //略 return bean; }

5.3 删除表单,而不是清除表单内容 (SQliteManager_Curve.java类中的方法)

public void delectSheet(){ try{ SQLiteDatabase db = MySQLiteHelper.getDatabase(context); db.execSQL("DELETE FROM " + tabel_name); Log.e(TAG, "delectSheet: 删除表单ok" ); }catch (Exception e){ Log.e(TAG, "delectSheet: 删除表单错误" ); } }

5.4 清空表单内容,而不是删除表单 (SQliteManager_Curve.java类中的方法)

public void clearSheet(){ try{ SQLiteDatabase db = MySQLiteHelper.getDatabase(context); db.execSQL("DELETE FROM " + tabel_name); db.beginTransaction(); try { db.delete(tabel_name, null, null); db.setTransactionSuccessful(); } finally { db.endTransaction(); } db.execSQL("VACUUM"); }catch (Exception e){ Log.e(TAG, "清空-错误" ); } }
5.5 获取表单-总数量(SQliteManager_Curve.java类中的方法)
public int getCount(){ try{ SQLiteDatabase db = MySQLiteHelper.getDatabase(context); // 查询所有数据 Cursor cursor = db.rawQuery("SELECT * FROM " + tabel_name, null); int count = cursor.getCount(); // 直接获取Cursor中的记录数 cursor.close(); db.close(); Log.e("TAG","getCount()数量: "+ count); return count; }catch (Exception e){ Log.e("TAG","getCount()错误:"); return -1; }

等待更新

http://www.jsqmd.com/news/508083/

相关文章:

  • Qwen3.5-9B金融分析应用:财报PDF理解+结构化摘要生成
  • C# LINQ实战:IQueryable延迟执行原理与Entity Framework性能优化技巧
  • PlatformIO工程中高效管理外部库文件的4种实用方法
  • SOONet模型Matlab联合仿真:视频分析与算法验证工作流
  • GeoServer漏洞复现实战:从SQL注入到SSRF的5个关键CVE解析(附环境搭建指南)
  • 图片类PDF怎么转成可编辑的Word?三大妙招,轻松搞定!
  • 2026男士素颜霜排行|实测8款,油痘肌/新手闭眼冲不踩雷 - 品牌测评鉴赏家
  • Qwen3-32B-Chat效果对比:不同FlashAttention版本对RTX4090D推理性能影响
  • Clion配置EasyX图形库全攻略:从下载到运行第一个图形程序
  • 男士素颜霜排行|2026实测不踩雷,新手闭眼冲,伪素颜天花板! - 品牌测评鉴赏家
  • GLM-OCR企业级部署实战:构建高可用内网OCR服务集群
  • LingBot-Depth模型选择指南:lingbot-depth vs lingbot-depth-dc,哪个更适合你?
  • 手把手教你配置MusePublic:Ubuntu系统AI艺术创作环境全攻略
  • Linux性能监控实战:nmon命令参数详解与analyser图表自动化分析技巧
  • 微信5000好友,深夜无人可聊怎么破?
  • 利用nlp_structbert_sentence-similarity_chinese-large优化推荐系统:基于内容语义的相似物品推荐
  • 细胞分化轨迹分析避坑指南:Slingshot常见问题与解决方案
  • Windows远程会议音频录制进阶:捕获系统内部声音的立体声混音实战
  • Qt之QFile高效文件读写实践指南
  • C语言基础项目实战:编写简易客户端调用Ostrakon-VL-8B的REST API
  • GISBox实战:把无人机拍的LAS点云,变成网页上能飞的3DTiles模型
  • Visdom可视化工具启动失败?手把手教你解决WinError 10061连接问题(含Anaconda环境配置)
  • 计算机毕业设计之springboot计算机学院机房预约管理系统
  • BGE Reranker-v2-m3快速部署:无需模型下载,内置bge-reranker-v2-m3权重镜像
  • 自动驾驶凭啥不卡?揭秘5G硬切片
  • 质子交换膜燃料电池PEMFC的Matlab/Simulink滑模控制模型:过氧比、温度及阴、阳...
  • OpenClaw 超级 AI 实战专栏【补充内容】Token是什么(AI时代的必知概念)
  • openclaw的远程连接
  • SeqGPT-560M企业落地:电力调度日志结构化——故障线路、操作时间、恢复状态
  • 2024-2026年厦门中式风格装修公司推荐:全案设计一站式服务打造新中式美学空间 - 十大品牌推荐