Android 根据sql文件创建数据库并插入数据

英语单词SQL数据库一千词带音标例句发音【安卓SQLite网页MySQL皆可用】 【一千英语单词加翻译音标例句发音sql文件db文件】 蛋疼,上传完文件发现默认就是5C币一次,居然不是免费的,这里直接放出sql文件好了。供大家免费复制。 包含了一千多个英语单词的sql文件。移动安卓,服务器皆可用。 使用方法: 1、Web开发:navicat直接导入sql文件(导入到MySQL数据库里!)。 2、移动安卓: 方法1、直接下我的db文件 方法2、sql... 阅读详情

因为在开发客户端的时候,服务器端的有写数据是重复的,不需要再去访问服务器的,然后服务器端提供的是一个sql文件,里面包含了数据库和数据,我们这些开发客户端的不可能一行一行的进行手动入库吧?所以我就想到了直接读取sql文件进行创建数据并插入数据好了。

创建DBHelp并继承SQLiteOpenHelper

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
public class DBHelper extends SQLiteOpenHelper {
 
     private Context mContext;
 
     public DBHelper(Context context, String databaseName,
             CursorFactory factory, int version) {
         super (context, databaseName, factory, version);
         mContext = context;
     }
 
     /**
      * 数据库第一次创建时调用
      * */
     @Override
     public void onCreate(SQLiteDatabase db) {
         if (!tabIsExist( "test" , db)) {
             executeAssetsSQL(db, "test.sql" );
             // db.execSQL(sql);
             //System.out.println("创建表");
         }
     }
 
     /**
      * 数据库升级时调用
      * */
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         // 数据库不升级
         if (newVersion <= oldVersion) {
             return ;
         }
         Configuration.oldVersion = oldVersion;
 
         int changeCnt = newVersion - oldVersion;
         for ( int i = 0 ; i < changeCnt; i++) {
             // 依次执行updatei_i+1文件 由1更新到2 [1-2],2更新到3 [2-3]
             String schemaName = "update" + (oldVersion + i) + "_"
                     + (oldVersion + i + 1 ) + ".sql" ;
             executeAssetsSQL(db, schemaName);
         }
     }
 
     /**
      * 读取数据库文件(.sql),并执行sql语句
      * */
     private void executeAssetsSQL(SQLiteDatabase db, String schemaName) {
         BufferedReader in = null ;
         try {
             in = new BufferedReader( new InputStreamReader(mContext.getAssets()
                     .open(Configuration.DB_PATH + "/" + schemaName)));
 
             //System.out.println("路径:" + Configuration.DB_PATH + "/" + schemaName);
             String line;
             String buffer = "" ;
             while ((line = in.readLine()) != null ) {
                 buffer += line;
                 if (line.trim().endsWith( ";" )) {
                     db.execSQL(buffer.replace( ";" , "" ));
                     buffer = "" ;
                 }
             }
         } catch (IOException e) {
             Log.e( "db-error" , e.toString());
         } finally {
             try {
                 if (in != null )
                     in.close();
             } catch (IOException e) {
                 Log.e( "db-error" , e.toString());
             }
         }
     }
 
     public List selectAllCities(SQLiteDatabase db) {
         List areas = new ArrayList();
         Area area;
         String sql = "select * from test where area_level=?" ;
         Cursor cursor = db.rawQuery(sql, new String[] { "" + 0 });
         
         while (cursor.moveToNext()){
             area = new Area();
             area.setId(cursor.getInt( 0 ));
             area.setArea_name(cursor.getString( 2 ));
             areas.add(area);
             area = null ;
         }
         cursor.close();
         
         return areas;
     }
     
     public List selectAllAreas(SQLiteDatabase db, int parent_id) {
         List areas = new ArrayList();
         Area area;
         String sql = "select * from test where parent_id=?" ;
         Cursor cursor = db.rawQuery(sql, new String[] { "" + parent_id });
         
         while (cursor.moveToNext()){
             area = new Area();
             area.setId(cursor.getInt( 0 ));
             area.setArea_name(cursor.getString( 2 ));
             areas.add(area);
             area = null ;
         }
         cursor.close();
         
         return areas;
     }
 
     /**
      * 判断是否存在某一张表
      * @param tabName
      * @param db
      * @return
      */
     public boolean tabIsExist(String tabName, SQLiteDatabase db) {
         boolean result = false ;
         if (tabName == null ) {
             return false ;
         }
         Cursor cursor = null ;
         try {
             String sql = "select count(*) as c from sqlite_master where type ='table' and name ='" + tabName.trim() + "' " ;
             cursor = db.rawQuery(sql, null );
             if (cursor.moveToNext()) {
                 int count = cursor.getInt( 0 );
                 if (count > 0 ) {
                     result = true ;
                 }
             }
 
         } catch (Exception e) {
         }
         return result;
     }
 
}

Configuration.java是一些常量

?
1
2
3
4
5
6
7
public class Configuration {
     public static final String DB_PATH = "schema" ;
     public static final String DB_NAME = "test.db" ;
     public static final int DB_VERSION = 1 ;
     public static int oldVersion = - 1 ;
     
}
sql文件是放在assets->schema->test.sql

其实这个过程非常的简单易懂,就是根据路径去读取文件,然后读取文件里面的内容,再根据关键字,sqllite会自动进行相应的操作,所以这个sql文件中的sql语句一定要规范,不然会写入不了的。

在activity中调用:

?
1
2
3
dbHelper = new DBHelper( this , "test" , null , 1 );
 
dbHelper.onCreate(dbHelper.getWritableDatabase());
Android如何使用SQLlite数据库 先写一个类,继承自SQLiteOpenHelper public class MyDatabaseHelper extends SQLiteOpenHelper { //声明一个Context private Context context; //原本的重写方法很多用不到的参数 这里直接删除了,第二个参数为数据库的名字(需要用db结尾) // 调用父类的时候传... 阅读详情

相关推荐

android 连接SQL Server数据库并进行数据操作

前言:在做具体操作时先需要把jtds-1.2.jar 包放到libs目录当中(1.2是版本号,可用更新的版本)。连接数据库需在子线程操作,不能在主线程。 下面栗子的表名为LoginUser,有UserName\UserPwd\OrderNumber 三列。 UserName UserPwd OrderNumber admin 123 0 amberoot...

amberoot's Space 1万+

Android作业:SQL添加和删除数据

先简单说下这次作业:个人感觉这次作业比较麻烦,难度上还好(估计是因为上这次课时是有史以来听得最认真的一次的缘故) 言归正传,要想实现信息显示,就得先创建数据库 我创建了一个微型的 public void insert(Student student) { // 1. 打开数据库 db = helper.getWritableDat...

dcthbvss82714的博客 244

Android数据库操作:使用反射机制进行数据插入与查询

本文还有配套的精品资源,点击获取 简介:在Android应用开发中,反射机制可以增加对SQLite数据库操作的灵活性,尤其是在处理动态数据模型和自定义SQL语句时。本文详细介绍了如何通过反射实现SQLite数据库的数据插入和查询,包括创建自定义的数据库帮助类、利用反射来动态构建SQL语句,并通过示例代码展示了整个操作流程。需要注意的是,虽然反射提供了强大的功能,但也可能带来...

weixin_30820933的博客 1666

Android开发之SQLite数据库编程

这篇文章主要介绍 在安卓应用中通过SQLite数据库编程的方式,实现对姓名和年龄的增删改操作 以下是详细代码 1、首先在activity_main.xml中设计界面,下面是源代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r...

qq_44669390的博客 864

android studio 数据库的增删查改

一个展示android studio 数据库的增删查改的小工程,运用了SQListeDatabase,并重写onCreate()和onCupgrade()方法

Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句

Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句。 博文介绍:http://blog.csdn.net/qq_21376985/article/details/51818806

安卓中Sqlite插入数据两种方式

1. //插入数据           db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age});  2. //ContentValues以键值对的形式存放数据           ContentValues cv = new Conten

yWX277519的博客 5121

Python爬虫实战:5分钟搞定政府网站公开数据抓取(附完整代码)

本文详细介绍了如何使用Python爬虫快速抓取政府网站公开数据,包括环境配置、网站结构分析、请求头构建、数据处理与存储等关键步骤。通过实战案例和完整代码,帮助开发者高效获取结构化数据,适用于数据分析、市场研究等场景。

weixin_29057065的博客 941

【工作笔记】创建表的sql语句和向其中添加数据的sql语句

工作中需要自己创建一个表并且向其中加入数据,在这里记录一下,因为我们用的是oracle数据库,所以字段类型用的是varchar2如果是mysql的话,是没有varchar2的,只有varchar 首先创建表 create table A( id varchar2(50) not null, name varchar2(200) not null, c varchar2(10), d varchar2(20), . . . create_time varchar2(14) not null,

NewBeeMu的博客 2688

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

Android中如何根据sql文件创建数据库并插入数据

注:本人转载,如原文作者看到十分抱歉!同时也十分感谢! 因为在开发客户端的时候,服务器端的有写数据是重复的,不需要再去访问服务器的,然后服务器端提供的是一个sql文件,里面包含了数据库和数据,我们这些开发客户端的不可能一行一行的进行手动入库吧?所以我就想到了直接读取sql文件进行创建数据并插入数据好了。 创建DBHelp并继承SQLiteOpenHelper public class D

wyx_1998627的博客 516

矢量网络分析仪VNA的校准之SOLT方法

作者:杭州冥鸿电子科技有限公司 邮箱:huanglong@deepelec.com S参数的测量方法有两种,一种是基于扫频测量的原理(VNA),另外一种是基于快沿阶跃响应的原理(TDR)。 下图是VNA的原理框图,主要包括以下部分: (1)激励信号源:提供感兴趣的频率范围内的入射信号; (2)信号分离装置:含功分器和定向耦合器,分离出入射,反射和传输信号; (3)接收机:...

u010018619的博客 2万+

安卓数据库SQLite

安卓数据库SQLite

似霰的博客 7984

Design Compiler时序约束实战:如何用set_clock_uncertainty解决时钟抖动问题?

本文深入探讨了在Design Compiler时序约束实战中,如何精准运用set_clock_uncertainty命令解决时钟抖动等非理想性问题。文章详细解析了该命令在时钟树综合前后的不同应用策略、建立时间与保持时间的差异化设置,并对比了其与set_clock_jitter的适用场景,旨在帮助数字IC设计工程师制定稳健的时序约束,为后端物理实现预留合理的安全裕量,从而高效达成时序收敛。

weixin_29196891的博客 299

第21章 分层架构软件测试

技术人员和客户代表对代码服务相关的技术进行详细的交流,由此确定代码审计的方案(哪些代码要审计、用什么方式审计、审计的时间、审计的要求等)代码审计报告提交和沟通之后,跟开发人员针对代码审查发现的问题进行修改,然后代码审查人员进行回归的检查,然后提交复查的报告;本层不需要了解其它层的实现细节,只需要考虑与本层相关的两层之间的接口和调用的情况。然后对客户要求的功能点进行人工的代码审查,对源代码的扫描结果进行人工的分析和确认;结合自动化扫描的结果和人工审查的结果生成测试对象的代码审查报告,最后提交给客户;

李黏黏的博客 3270

Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。 有时需要把一些数据内置到应用中,常用的有以下2种方式:其一直接拷贝制作好的SQLite数据库文件,其二是使用系统提供的数据库,然后把数据批量插入。我更倾向于使用...

android开发笔记 3456

双系统引导修复:GRUB消失后恢复Windows与Ubuntu启动菜单

在UEFI引导架构下,操作系统启动依赖于EFI系统分区(ESP)中存储的引导加载程序。当多个系统共存时,引导管理器负责识别并加载不同操作系统的引导文件。然而,Windows更新或系统调整时常会重置UEFI启动顺序,导致GRUB引导菜单消失,直接进入Windows。这一问题的技术价值在于理解UEFI启动流程与多系统引导管理机制,掌握ESP分区结构与引导文件修复方法。常见的应用场景包括双系统安装后的引导修复、系统更新后的启动项丢失以及磁盘分区调整导致的引导故障。本文针对**GRUB引导菜单消失**和**UEFI

weixin_29895109的博客 294

Android读写SQLite数据库并导出SQLite数据写入到Excel表中

Android读写SQLite数据库并导出SQLite数据写入到Excel表中 需要先引入Apache POI的jar包到Android Studio中的libs,以扩展Android支持读写Excel表格。参考我的另一篇文章: 《Java读取Excel数据:基于Apache POI(一)》链接: https://blog.csdn.net/zhangphil/article/details/...

Zhang Phil 1万+

运放比较电路分析以及应用

摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。

qq_37999850的博客 395

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

安卓mysql插入数据_android 怎么往数据库里面添加数据

展开全部一、引入数据库创建的问题解决了,接下来就该使用数据库实现应用32313133353236313431303231363533e4b893e5b19e31333363353832程序功能的时候了。基本的操作包括创建、读取、更新、删除,即我们通常说的 CRUD(Create, Read, Update, Delete)。在实现这些操作的时候,我们会使用到两个比较重要的类 SQLiteDatab...

weixin_32549035的博客 2556

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android 对SQLite数据库实现插入和查找

SQLiteOpenHelper package tech.huqi.myapplication.data; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by Administrator on 2020/11/17. */ public class DBHe.

qq_43412810的博客 968

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android Studio 安卓创建数据库

示例创建数据库的类,并创建增加、查询、删除用户信息的方法,在其他类直接调用即可 public class UserDB { SQLiteDatabase writableDatabase; //声明操作数据库对象 private static String DB_NAME = "user.db"; //表名 private static int DB_VERSION = 1; //版本号 private static String SQL = "create table u

nine_dollar的博客 6658

安卓mysql插入数据_Android批量插入数据到SQLite数据库的方法

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。有时需要把一些数据内置到应用中,常用的有以下几种方式:1、使用db.execSQL(sql)这里是把要插入的数据拼接成可执行的sql语句,然后调用db.execSQL(sql)方...

weixin_34186408的博客 571

安卓开发操作数据库

安卓的数据库为SQLite,使用的sql语句都是互通的,这里就不多讲了,看代码: static ArrayAdapter adapter; ImageView img; Button add; Button delete; Button updata; Button select; ListView liv; SQLiteDatabase ...

qq_44946212的博客 3588
上一篇: android夜间模式的实现
下一篇: 闲谈Android中的@和?符号的引用区别
deng_wei_csdn
博客等级 码龄10年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值