我又回到了安卓的学习当中,忙来忙去终于忙的差不多有时间做自己的事情了,这感觉实在是太棒了!!本来想写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数据库的更多相关文章

  1. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  2. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  3. android中滑动SQLite数据库分页加载

    今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqli ...

  4. android中的SQLite数据库

    SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法 SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQ ...

  5. Android实例-操作sqlite数据库之Grid显示图片(XE8+小米2)

    结果: 1.数据库文件,记得打包到程序中(assets\internal\). 操作方法: 1.新建firemonkey mobile application①菜单->File->New- ...

  6. android Api操作SQLite数据库的示例代码

    import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databa ...

  7. android中操作SQLite注意事项

    调用rawQuery()后,需要调用Cursor的movToFirst(); public Cursor query(String sql, String[] args){ SQLiteDatabas ...

  8. 在项目中使用SQLite数据库小结

    ------------------------------------------------------------------------推荐: - VS2012 使用 1.0.84 版的库 - ...

  9. JDBC访问及操作SQLite数据库

    SQLite 是一个开源的嵌入式关系数据库,其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进 ...

随机推荐

  1. mysql store procedure 存储过程

    参考资料: 1.http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html 2.https://dev.mysql.com/doc/refman/5.7/ ...

  2. 华为荣耀V8这个7.0的系统的root

    原文链接:http://m.shuaji.com/jiaocheng/5585.htm 已经有不少的机友的华为荣耀V8手机已经升级到EMUI5.0了,也就是现在的安卓7.0的系统,那这个时候该如何进行 ...

  3. fiddler 手机装证书

    1: 打开浏览器的地址 输入fiddler 右上方的地址 172.21.14.197:8888 2: 然后点击页面里的 FiddlerRoot certificate 3: 最后验证下   iOS 1 ...

  4. Linux免密登录

    ssh连接上服务器 ssh -p 端口 用户名@ip地址 获取本地的pub ssh key cd ~/.ssh vi id_rsa.pub 拷贝里面的内容 将拷贝的内容放到服务器的authorized ...

  5. poj 3463 次短路

    题意:给定一个有向图,问从起点到终点,最短路+比最短路距离长1的路的个数. 当年数据结构课程设计用A*做过,现在忘光了,2333 #include<stdio.h> #include< ...

  6. bzoj 4322 东西分配问题

    问题:有n个东西,分给m个人,对于每个东西,每个人有喜欢与不喜欢两种态度:like[i][j],如果喜欢,那么他得到该东西时增加的喜悦度为k,否则为1,问是否存在一种分法,使得每个人都达到该人的最低喜 ...

  7. Trie树 理解

    Trie树的理解 Trie树又称单词查找树,字典树,是哈希树的变种: 优点在于:最大限度地减少无谓的字符串比较,查询效率比哈希高: 缺点在于:空间消耗很大: 性质 其基本性质可以归纳为: 跟结点不包括 ...

  8. STL 优先队列详解

    优先队列是一个保证队列里元素单调的队列,我们可以利用它来维护一个线性结构的单调性. 一般的优先队列: 当然需要加头文件 #include <queue> priority_queue &l ...

  9. CodeForces 128D Numbers 构造

    D. Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  10. WhatsApp & Tasker for Android – Read & Write messages

    WhatsApp & Tasker for Android – Read & Write messages The requirement for the automation is ...