Android:数据库增删改查、SQLite、ORM、Cursor

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

1.继承类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
public  class  MySQLiteHelper  extends  SQLiteOpenHelper
{
     //重写构造方法
     public  MySQLiteHelper(Context context, String name, CursorFactory factory,
             int  version)
     {
         super (context, name, factory, version);
     }
     //创建表
     @Override
     public  void  onCreate(SQLiteDatabase db)
     {
         db.execSQL( "CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"  );
         db.execSQL( "CREATE TABLE student(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"  );
     }
     //升级表(当Database的Version低于当前new里的Version,直接执行下面方法)
     @Override
     public  void  onUpgrade(SQLiteDatabase db,  int  oldVersion,  int  newVersion)
     {
                                    
         int  v = newVersion - oldVersion;
         switch  (v)
         {
         case  3 :
             db.execSQL( "ALTER TABLE person ADD salary3 VARCHAR(20)" );
         case  2 :
             db.execSQL( "ALTER TABLE person ADD salary2 VARCHAR(20)" );
         case  1 :
             db.execSQL( "ALTER TABLE person ADD salary1 VARCHAR(20)" );
         default :
             break ;
         }
     }
}


2.实现增删改查:

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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/**
  *
CREATE TABLE person
(
        personid INTEGER PRIMARY KEY AUTOINCREMENT,
        name VARCHAR(20),
        phone VARCHAR(20)
)
DROP TABLE person  //删除表
INSERT INTO person(name,phone) VALUES ("rongqin","1598088588")  //插入
UPDATE person SET name="Andfeel" WHERE personid=2   //改
ALTER TABLE person ADD salary      //增加列
DELETE FROM person WHERE name="Andfeel"    //删除
                     
SELECT * FROM person WHERE name="Andfeel"
SELECT phone,name FROM person
SELECT name,phone FROM person ORDER BY name ASC"//ASC升序     DESC降序
                     
  *
  */
public  class  MainActivity  extends  Activity  implements  OnClickListener
{
                       
     private  TextView textView;
     private  MySQLiteHelper mDBHelper;
     private  MySQLiteHelper bHelper;
     @Override
     protected  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
                           
         findViewById(R.id.btn__create_table).setOnClickListener( this );
         findViewById(R.id.btn_delete_table).setOnClickListener( this );
         findViewById(R.id.btn_alter_table).setOnClickListener( this );
         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_select).setOnClickListener( this );
         textView = (TextView) findViewById(R.id.textView1);
                           
         //创建数据库
         mDBHelper =  new  MySQLiteHelper( this "one.db" null 3 );
     }
                       
     @Override
     public  boolean  onCreateOptionsMenu(Menu menu)
     {
         getMenuInflater().inflate(R.menu.activity_main, menu);
         return  true ;
     }
     @Override
     public  void  onClick(View v)
     {
         switch  (v.getId())
         {
         case  R.id.btn__create_table:
             btnCreateTable();
             break ;
         case  R.id.btn_delete_table:
             btnDeleteTable();
             break ;
         case  R.id.btn_alter_table:
             btnAlterTable();
             break ;
         case  R.id.btn_insert:
             btnInsert();
             break ;
         case  R.id.btn_delete:
             btnDelete();
             break ;
         case  R.id.btn_update:
             btnUpdate();
             break ;
         case  R.id.btn_select:
             btnSelect();
             break ;
                           
         default :
             break ;
         }
     }
     private  void  btnSelect() //查
     {
         SQLiteDatabase db = mDBHelper.getWritableDatabase();
                           
//        Cursor cursor = db.rawQuery("SELECT * FROM person WHERE name = ?", new String[]{"rongqin"});
//        cursor.moveToFirst();
                           
         Cursor cursor = db.query(
                 "person" ,                        //表名
                 new  String[]{ "phone" , "name" },    //查询的列名
                 "name=?" ,                      //查询条件
                 new  String[]{ "huangxx" },         //查询参数
                 null null ,
                 "phone DESC" );                   //排序,升序为ASC,降序为DESC
         boolean  hasdata = cursor.moveToFirst(); //游标移到第一行
                           
         StringBuilder sb =  new  StringBuilder();
         while (hasdata) //是否有数据
         {
             int  columnIndex = cursor.getColumnIndex( "name" ); //得到name的列数
             String name = cursor.getString(columnIndex); //得到name这一列的值
                               
             int  columnIndex2 = cursor.getColumnIndex( "phone" );
             String phone = cursor.getString(columnIndex2);
                               
             sb.append( "name:" ).append(name).append( " phone:" ).append(phone).append( "--" );
             hasdata = cursor.moveToNext(); //游标移动到下一行,判断是否有值
         }
         textView.setText(sb.toString());
     }
     private  void  btnUpdate() //改
     {
         SQLiteDatabase db = mDBHelper.getWritableDatabase();
//        db.execSQL("UPDATE person SET phone='0592xxxxxx' WHERE personid=5");
                           
         ContentValues values =  new  ContentValues();
         values.put( "name" "haoyouduo" );
         values.put( "phone" "666666" );
         db.update( "person" , values ,  "personid=?"  new  String[]{ "8" });
     }
     private  void  btnDelete() //删
     {
         SQLiteDatabase db = mDBHelper.getWritableDatabase();
//        db.execSQL("DELETE FROM person WHERE name='Andfeel'");
                           
         db.delete( "person" , "name = ? and personid = ?" new  String[]{ "haoyouduo"  "5" });
     }
     private  void  btnInsert() //增
     {
         SQLiteDatabase db = mDBHelper.getWritableDatabase();
//        db.execSQL("INSERT INTO person(name,phone) VALUES ('rongqin',1598088588)");
                           
         ContentValues values =  new  ContentValues();
         values.put( "name" "huangxx" );
         values.put( "phone" "158888" );
         db.insert( "person" null  , values );
     }
     private  void  btnAlterTable() //扩展表
     {
                           
     }
     private  void  btnDeleteTable() //删除表
     {
                           
     }
     private  void  btnCreateTable() //创建表
     {
                           
     }
}



其他总结:

1.关闭数据源

1
2
3
4
5
6
7
8
9
10
/**
  * 关闭数据源
  */
public  void  closeConnection()
{
     if  (mDb !=  null  && mDb.isOpen())
         mDb.close();
     if  (mDbHelper !=  null )
         mDbHelper.close();
}





本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1216877,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
6月前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
116 2
|
3月前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
127 13
|
3月前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
5月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
176 5
|
5月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
54 1
|
5月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
67 5
|
6月前
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
|
6月前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
5月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!

热门文章

最新文章