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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

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,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
6月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
529 0
|
10月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
865 77
|
10月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
302 5
|
10月前
|
数据库 Android开发
Android外部数据库的引用
简介:本文介绍了在Android项目中引用外部数据库的方法。首先,将现成的数据库文件放入项目的`assets`文件夹中(需手动创建)。其次,在APP引导界面通过代码将数据库拷贝至App目录下,确保数据库可用。最后,对数据库进行增删改查等操作。关键步骤包括判断数据库是否存在、使用`AssetManager`读取数据库文件并写入App私有目录,实现外部数据库的顺利集成与使用。
133 2
|
10月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
306 0
Android常用的room增删改查语句(外部数据库)
|
11月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
702 14
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
533 13
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
1267 15
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
397 8