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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

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,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14小时前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
11 2
|
2天前
|
存储 数据库 Android开发
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
10 0
|
3天前
|
数据库 数据安全/隐私保护 数据库管理
QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3
QT中sqlite数据库数据加密/混淆---MD5/SHA1/SHA2/SHA3
|
16天前
|
SQL 关系型数据库 数据库
17. Python 数据库操作之MySQL和SQLite实例
17. Python 数据库操作之MySQL和SQLite实例
51 2
|
16天前
|
API 数据库 数据库管理
Flask Web开发基础:数据库与ORM实战
该文介绍了如何使用 Flask、SQLAlchemy 和 SQLite 实现数据库操作。首先,通过创建虚拟环境和安装 flask-sqlalchemy(版本2.5.1)及 sqlalchemy(版本1.4.47)来设置环境。接着,配置数据库URI,定义User和Movie模型类表示数据库表,并通过db.create_all()创建表。文章还展示了如何插入、查询、更新和删除记录,强调了db.session.commit()在保存更改中的关键作用。查询涉及filter、order_by等方法,提供了一系列示例。
299 1
|
17天前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
12 1
|
1天前
|
存储 关系型数据库 MySQL
数据库MySQL——从0到1入门教程
数据库MySQL——从0到1入门教程
202 0
|
2天前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
205 1
|
2天前
|
SQL 关系型数据库 MySQL
使用 C++ 结合 MySQL 数据库实现留言板
使用 C++ 结合 MySQL 数据库实现留言板
145 0
|
2天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)

热门文章

最新文章