Android中操作SQLite数据库
我又回到了安卓的学习当中,忙来忙去终于忙的差不多有时间做自己的事情了,这感觉实在是太棒了!!本来想写android的控件以及他们的监视器的,但是我查了查android的手册,基本上都能查到,但是查有些功能就比较麻烦,比如EditText中的TextWatcher接口,一般查到的都是OnEditorActionListener接口。好了废话不多说,先割了他!!!!
------------------------咯咯---------------------咯咯------------------------------咯咯------------------------------
创建工程之后,建立一个包,主要是写SQLite的。

再来补充下背景,在这里,我在first这个包里写了两个类,这是因为我在弄两个activity的切换,不影响本实验,本实验是放在OtherActivity.java里面的进行的。
建立一个Sqlite.java的类,继承SQLiteOpenHelper。
public class Sqlite extends SQLiteOpenHelper{
private static final int VERSION = 1;
public Sqlite(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO 自动生成的构造函数存根
}
public Sqlite(Context context,String name){
this(context,name,VERSION);
}
public Sqlite(Context context,String name,int version){
this(context, name,null,version);
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO 自动生成的方法存根
System.out.println("create a Database");
//execSQL函数用于执行SQL语句
arg0.execSQL("create table user(id int,name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO 自动生成的方法存根
System.out.println("update a Database");
}
}
在OtherActivity.java中加入这个包,
import com.yuyidong.db.Sqlite;

这里是布局,前面的TextView和Button(Call)请大家无视掉。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" > <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:textSize="30sp" />
<Button
android:id="@+id/button_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call"
/>
<Button
android:id="@+id/button_create"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Create"
/>
<Button
android:id="@+id/button_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update"
/>
<Button
android:id="@+id/button_insert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Insert"
/>
<Button
android:id="@+id/button_update_table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update_Table"
/>
<Button
android:id="@+id/button_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Query"
/> </LinearLayout>
接下来是申明已经添加到监听器中。
public class OtherActivity extends Activity{
private TextView text;
private Button button;
private Button createButton;
private Button insertButton;
private Button updateButton;
private Button updateRecordButton;
private Button queryButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
Intent intenter = getIntent();
String value = intenter.getStringExtra("hello");
text = (TextView) findViewById(R.id.text);
text.setText(value);
button = (Button) findViewById(R.id.button_other);
buttonListener lisbtn = new buttonListener();
button.setOnClickListener(lisbtn);
createButton = (Button) findViewById(R.id.button_create);
buttonListener createbtn = new buttonListener();
createButton.setOnClickListener(createbtn);
updateButton = (Button) findViewById(R.id.button_update);
buttonListener updatebtn = new buttonListener();
updateButton.setOnClickListener(updatebtn);
insertButton = (Button) findViewById(R.id.button_insert);
buttonListener insertbtn = new buttonListener();
insertButton.setOnClickListener(insertbtn);
updateRecordButton = (Button) findViewById(R.id.button_update_table);
buttonListener updatetablebtn = new buttonListener();
updateRecordButton.setOnClickListener(updatetablebtn);
queryButton = (Button) findViewById(R.id.button_query);
buttonListener querybtn = new buttonListener();
queryButton.setOnClickListener(querybtn);
}
请大家继续无视掉Intent、text、button这三个对象。
接下来讲一讲Button的监听器里面发生的故事。红色的注释是主要的说明。
class buttonListener implements OnClickListener
{
private Button button_check;
private int version = 1;;
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
//将View的对象v转换成Button的
button_check = (Button) v;
//请无视掉这里,这个是转跳到发短信的Activity的Button的操作
if(button_check==button)
{
Uri uri = Uri.parse("smsto:10086");
Intent intenter = new Intent(Intent.ACTION_SENDTO,uri);
intenter.putExtra("sms_body", "Test good!");
startActivity(intenter);
}
//如果是按下的创建数据库的那个Button的话,执行
else if(button_check == createButton)
{
//创建一个Sqlite对象
Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db");
//只有调用了Sqlite对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库
SQLiteDatabase db = dbHelper.getReadableDatabase();
//Toast显示调试
Toast.makeText(OtherActivity.this, "Create", Toast.LENGTH_SHORT).show();
}
else if(button_check == updateButton)
{
//每次更新后,数据库版本加1
version++;
Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db",version);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Toast.makeText(OtherActivity.this, "Update", Toast.LENGTH_SHORT).show();
}
else if(button_check == insertButton)
{
//生成ContentValues对象
ContentValues values = new ContentValues();
//想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
values.put("id", 1);
values.put("name","zhangsan");
Sqlite dbHelper = new Sqlite(OtherActivity.this, "yyd_test_db", version);
SQLiteDatabase db = dbHelper.getWritableDatabase();
//调用insert方法,就可以将数据插入到数据库当中
db.insert("user", null, values);
Toast.makeText(OtherActivity.this, "Insert", Toast.LENGTH_SHORT).show();
}
else if(button_check == updateRecordButton)
{
//得到一个可写的SQLiteDatabase对象
Sqlite dbHelper = new Sqlite(OtherActivity.this, "yyd_test_db", version);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhangsanfeng");
//第一个参数是要更新的表名、第二个参数是一个ContentValeus对象、第三个参数是where子句
db.update("user", values, "id=?", new String[]{"1"});
Toast.makeText(OtherActivity.this, "Update_Table", Toast.LENGTH_SHORT).show();
}
else if(button_check == queryButton)
{
Sqlite dbHelper = new Sqlite(OtherActivity.this,"yyd_test_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
//用cursor.moveToNext()判断是否还存在下一个,若存在返回真,不存在返回假。
while(cursor.moveToNext())
{
String name = cursor.getString(cursor.getColumnIndex("name"));
System.out.println("Get--->" + name);
}
}
}
}
不仅可以写程序操作SQLite,还可以用shell操作SQLite数据库。

在App程序里面创建了数据库之后才有了databases,登进去数据库,还是与一般关系型数据库还是有差别的。

总结一下,简短不割,SQLite在App中不提倡使用,因为他有时候会无缘无故的报错,因为我在测试的时候就经常发生,第一次把程序烧进去的时候,可以N次创建数据库同哟个数据库不报错,这就不说了,第二次打开的时候,无论点哪个Button都会直接程序崩溃,包括Insert,第一次的时候就不会,而且还可以查到数据表里面的信息,第二次就不行了,query也query不起了。很蛋疼。
转载请注明出处:http://www.cnblogs.com/yydcdut/p/3651977.html
Android中操作SQLite数据库的更多相关文章
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- android中与SQLite数据库相关的类
为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...
- android中滑动SQLite数据库分页加载
今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqli ...
- android中的SQLite数据库
SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法 SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQ ...
- Android实例-操作sqlite数据库之Grid显示图片(XE8+小米2)
结果: 1.数据库文件,记得打包到程序中(assets\internal\). 操作方法: 1.新建firemonkey mobile application①菜单->File->New- ...
- android Api操作SQLite数据库的示例代码
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databa ...
- android中操作SQLite注意事项
调用rawQuery()后,需要调用Cursor的movToFirst(); public Cursor query(String sql, String[] args){ SQLiteDatabas ...
- 在项目中使用SQLite数据库小结
------------------------------------------------------------------------推荐: - VS2012 使用 1.0.84 版的库 - ...
- JDBC访问及操作SQLite数据库
SQLite 是一个开源的嵌入式关系数据库,其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进 ...
随机推荐
- session效验
看代码... <?php $servername = "服务器名"; $username = "账户名"; $password = "密码&qu ...
- golang make()的第三个参数
golang分配内存有一个make函数,该函数第一个参数是类型,第二个参数是分配的空间,第三个参数是预留分配空间,前两个参数都很好理解, 对于第三个参数,例如a:=make([]int, 5, 10) ...
- android 视频
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 第一套完整版: 第二套完整版: 第三套完整版: 第四套完整版: 第五套完整版: ==== ...
- android 单位 什么是屏幕密度?
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha sp dp px in in 表示英寸, 是屏幕的物理尺寸.1英寸是2.54厘米. dp ...
- bzoj4668: 冷战 并查集按秩合并
题目链接 bzoj4668: 冷战 题解 按秩合并并查集,每次增长都是小集合倍数的两倍以上,层数不超过logn 查询路径最大值 LCT同解 代码 #include<bits/stdc++.h&g ...
- 方程式0day图形化利用工具
最近方程式的漏洞着实活了一把,分析了下githup上面的文件目录,找到了利用文件,主要是针对windows主机的SMB.RDP协议进行攻击,因为我主要根据他们提供的payload的程序,利用这两个模块 ...
- [POI2015]Logistyka
[POI2015]Logistyka 题目大意: 一个长度为\(n(n\le10^6)\)的数列\(A_i\),初始全为\(0\).操作共\(m(m\le10^6)\)次,包含以下两种: 将\(A_x ...
- 【JavaScript代码实现四】获取和设置 cookie
// 创建cookie function setCookie(name, value, expires, path, domain, secure) { var cookieText = encode ...
- 洛谷OJ P2356 弹珠游戏 维护前缀和
题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...
- poj 1328 Radar Installation 排序贪心
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56702 Accepted: 12 ...