- 浏览: 549051 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
Android 集成了SQLite数据库
Android在运行时集成了SQLite , 所以每个Android应用程序都可以使用SQLite数据库。
数据库存放的位置:data/<项目文件夹>/databases/
第一步:创建数据库
Android 中提供SQLiteOpenHelper类帮助创建一个数据库,继承该类可以轻松的创建SQLite数据库;
注意:SQLiteOpenHelper的子类至少要实现三个方法:
* 带参的构造方法;
* onCreate();
* onUpgrag();
java代码如下:
package com.example.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; /* SQLiteOpenHelper的子类, 用于操作数据库 * * SQLiteOpenHelper 是一个辅助类,用来管理数据库的创建和版本,提供两方面的功能; * * 第一:getReadableDatabase() 、 getWriteableDatabase() 可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作; * * 第二:提供onCreate() ; onUpgrade() 两个回调函数,允许我们再创建和删除数据库时,进行自己的操作; * * */ public class MySQLiteOpenHelper extends SQLiteOpenHelper { /* 构造方法,调用父类SQLiteOpenHelper的构造函数 */ /* 参1:上下文环境;参2:数据库名称(以.db结尾) ; 参3:游标工厂(默认为null) ; 参4:代表使用数据库模型版本的证书*/ public MySQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } /* 根据需要对SQLiteDatabase 的对象填充表和数据初始化 */ /* 该方法时在第一次创建的时候执行,实际上时第一次得到SQLiteDatabase对象的时侯才会调用这个方法 */ public void onCreate(SQLiteDatabase db) { // TODO 创建数据库后,对数据库的操作 } /* 将数据库从旧的模型转换为新的模型 *//* 参1:对象 ; 参2:旧版本号 ; 参3:新版本号 */ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO 更改数据库版本的操作 } /* 打开数据库执行的函数 */ public void onOpen(SQLiteDatabase db) { // TODO 每次成功打开数据库后首先被执行 super.onOpen(db); } }
案例代码如下:
package com.example.sqlite; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { /* 设置表相关信息的常量 */ final String MYTAB = "t_score"; final String MYNAME ="name"; final String MYSCORE = "score"; MySQLiteOpenHelper helper; private Button selectData,createDatabase,createTable,insertData,updateData,deleteData; /* 获取组建对象 */ public void init(){ selectData = (Button) findViewById(R.id.selectData); createDatabase = (Button) findViewById(R.id.createDatabase); createTable = (Button) findViewById(R.id.createTable); insertData = (Button) findViewById(R.id.insertData); updateData = (Button) findViewById(R.id.updateData); deleteData = (Button) findViewById(R.id.deleteData); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 初始化组件对象 */ init(); /* 创建数据库 */ createDatabase.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 创建一个MySQLiteOpenHelper,该语句执行是不会创建或打开连接的 */ helper = new MySQLiteOpenHelper(MainActivity.this, "mydb.db", null, 1); /* 调用MySQLiteOpenHelper的getWriteableDatabase()方法,创建或者打开一个连接 */ SQLiteDatabase sqlitedatabase = helper.getWritableDatabase(); Toast.makeText(MainActivity.this, "数据库创建成功", 1000).show(); } }); /* 创建表 */ createTable.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 创建一个MySQLiteOpenHelper,该语句执行是不会创建或打开连接的 */ helper = new MySQLiteOpenHelper(MainActivity.this, "mydb.db", null, 1); /* 获取一个可写的SQLiteDatabase对象,创建或打开连接 */ SQLiteDatabase sqliteDatabase = helper.getWritableDatabase(); /* 创建两张表 */ sqliteDatabase.execSQL("create table student(id INTEGER PRIMARY KEY autoincrement,name text);"); sqliteDatabase.execSQL("create table "+MYTAB+"("+MYNAME+" text,"+MYSCORE+" integer);"); /* 小贴士 */ Toast.makeText(MainActivity.this, "数据表创建成功", 1000).show(); } }); /* 插入数据 */ insertData.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 连接数据库 *//* 数据库中有表 , 对表进行操作 */ SQLiteDatabase sqliteDatabase = helper.getWritableDatabase(); /* 给表添加数据: *//* 方式1: *//* 增加一条数据 */ sqliteDatabase.execSQL("insert into student(name) values('mike')"); /* 方式2: *//* 使用SQLiteDatabase 对象的insert()方法 */ /* 创建ContentValues对象 *//* 每次插入的时一条数据 */ ContentValues cv = new ContentValues(); cv.put("name", "mary"); /* key==列 value==值 */ sqliteDatabase.insert("student", null, cv); cv.clear(); /* 对MYTAB进行数据添加 */ sqliteDatabase.execSQL("insert into "+MYTAB+" values('ray',95)"); sqliteDatabase.execSQL("insert into "+MYTAB+" values('tom',85)"); sqliteDatabase.execSQL("insert into "+MYTAB+" values('jone',90)"); cv.put(MYNAME, "jack"); cv.put(MYSCORE, 78); sqliteDatabase.insert(MYTAB, null, cv); cv.clear(); Toast.makeText(MainActivity.this, "数据插入成功", 1000).show(); } }); /* 修改数据 *//* updateData点击事件监听器 */ updateData.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 建立和数据库的连接,获取SQLiteDatabase对象 */ SQLiteDatabase sqliteDatabase = helper.getWritableDatabase(); /* 方式1:直接使用语句 */ //sqliteDatabase.execSQL("update student set name='mary key' where id=1"); /* 方式2:使用sqliteDatabase.update();方法 */ ContentValues cv = new ContentValues(); cv.put("name", "mary key"); /* 确定需要修改对应列的值 */ /* 参1:表名 ; 参2:ContentValues对象; 参3:where字句,相当于sql中where后面的语句,?是占位符 */ /* 参4:占位符的值; */ sqliteDatabase.update("student", cv, "id=?", new String[]{"1"}); Toast.makeText(MainActivity.this, "数据修改成功", 1000).show(); } }); /* 删除数据 ; 设置deleteData点击事件监听器 */ deleteData.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 与数据库建立联系,获得SQLiteDatabase的对象 */ SQLiteDatabase sqliteDatabase = helper.getWritableDatabase(); /* 使用sql语句直接进行删除 */ //sqliteDatabase.execSQL(""); /* 调用:SQLiteDatabase对象的delete()的方法删除数据 */ /* 参1:表名; 参2:条件语句; 参3:条件语句中对应占位符的值 */ sqliteDatabase.delete("student", "id=?", new String[]{"1"}); Toast.makeText(MainActivity.this, "数据删除成功", 1000).show(); } }); /* 查看数据 *//* selectData点击事件监听器 */ selectData.setOnClickListener(new OnClickListener() { public void onClick(View v) { /* 获取SQLiteDatabase的对象 */ SQLiteDatabase sqliteDatabase = helper.getReadableDatabase(); /* 调用SQLiteDatabase的query()方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象 */ /* 参1 String:表名 * 参2 String[]:需要查询的列; * 参3 String :查询条件; * 参4 String[]:查询条件的参数; * 参5 String: 对查询的结果进行分组; * 参6 String: 对分组结果进行限制; * 参7 String: 对查询结果进行排序; * * */ Cursor cursor = sqliteDatabase.query("student", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null); /* 保存结果集中对应字段的数据 */ String id = null; String name = null; /* 从结果集中读取数据 */ while(cursor.moveToNext()){ id = cursor.getString(cursor.getColumnIndex("id")); name = cursor.getString(cursor.getColumnIndex("name")); } Toast.makeText(MainActivity.this, "查询数据为:id="+id+" \n name="+name, 1000).show(); } }); } }
- 张军.rar (3.1 MB)
- 下载次数: 30
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3347提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3484Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3620Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2613多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4825And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2161实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4430... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1004/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2701DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2339近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3952EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1711自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1685自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3025<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2660/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21011、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3829Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2292/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3525package com.sun.coptfiletosd; ...
相关推荐
Android Studio SQLite数据库使用
android之SQLite数据库开发详解: Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用...
Android之Sqlite数据库操作实例
Android使用SQLite数据库进行增删改查详细案例...
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您...SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
Android 数据库SQLite 详解,简单学好SQLite
Android_SQLite数据库使用范例
Android之SQLite数据库的使用 Android之SQLite数据库的使用 Android之SQLite数据库的使用
一个android读取sqlite数据库的数据并用listview显示demo,如有问题及时提醒。
android对sqlite数据库的操作
该代码实现了android的sqlite数据库的加密和解密
Android 绿豆通讯录( SQLite数据库 + ListView数据展示控件 ) https://blog.csdn.net/weixin_44949135/article/details/106029404 采用 SQLite数据库 + ListView数据展示控件,可将用户添加的所有信息,分条...
资源名称:android中sqlite数据库的创建以及增删改查 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Android 操作 SQLite数据库 Android 操作 SQLite数据库 Android 操作 SQLite数据库
Android实验报告Sqlite数据库操作.pdf
android studio SQLite数据库的创建、增删改查操作 SharedPreferences存储数据的方法 掌握文
Android 操作 sqlite 数据库增加修改删除 Android 操作 sqlite 数据库增加修改删除 Android 操作 sqlite 数据库增加修改删除
Android中SQLite数据库的使用 1、创建SQLite数据库 SQLiteDatabase db= SQLiteDatabase.openOrCreateDatabase( /data/data/ + getPackageName() + /test.db, null); 执行完这条语句,可以在adb shell下进入/data/...
Android连接sqlite数据库进行增删改查和事务操作
基于Android的SQLite数据库操作Demo