安卓——数据篇-SQLite







http://tool.oschina.net/apidocs/apidoc?api=android/reference

详细的API文档


1.每个程序都有自己的数据库,默认情况下互不干扰

2.在查看自己创建的数据库时遇到了小插曲,打开的file explore时空白的,上网搜了一下,换了个API23的模拟器就ok了。

3.数据库存盘

file explore那行右边的两个黑色按钮,点击靠左的那个就可以存盘



一小段代码

package com.example.lenovo.sqlitedemo1;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //每个程序都有自己的数据库,默认情况下互不干扰
        //创建数据库
        /*
        Parameters:
        1.自己定义的数据库名字
        2.访问模式
        3.工厂类
         */
        SQLiteDatabase db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        //创建了一个表
        db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, name text not null, age integer not null, sex text not null) ");
        db.execSQL("insert into usertb(name,sex,age) values('张昊雨','男',20)");
        db.execSQL("insert into usertb(name,sex,age) values('郑道翔','男',19)");
        db.execSQL("insert into usertb(name,sex,age) values('安晨阳','男',20)");
        db.execSQL("insert into usertb(name,sex,age) values('秦鸿俊','男',21)");

        /*
        Cursor时安卓查询数据后得到的一个管理数据集合的类
         */
        Cursor cursor=db.rawQuery("select * from usertb",null);
        if(cursor!=null){
            while(cursor.moveToNext()){
                Log.i("info","_id:"+cursor.getInt(cursor.getColumnIndex("_id")));
                Log.i("info","name:"+cursor.getString(cursor.getColumnIndex("name")));
                Log.i("info","age:"+cursor.getInt(cursor.getColumnIndex("age")));
                Log.i("info","sex:"+cursor.getString(cursor.getColumnIndex("sex")));
            }
            cursor.close();//释放游标
        }
        db.close();//释放数据库
    }
}



建议使用下面这个类进行数据库操作



一小段用ContextValues的代码

package com.example.lenovo.sqlitedemo2;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获得数据库对象
        SQLiteDatabase db=openOrCreateDatabase("stu.db",MODE_PRIVATE,null);
        //创建了一个表
        db.execSQL("create table if not exists stutb (_id integer primary key autoincrement, name text not null, age integer not null, sex text not null) ");

        /*
        用ContentValues存储,类似HashMap 的key value键值对
         */
        ContentValues values=new ContentValues();

        values.put("name","张昊雨");
        values.put("age",20);
        values.put("sex","男");
        db.insert("stutb",null,values);//insert()方法会返回一个long类型的值,表示插入在第几行
        values.clear();//清空数据
        values.put("name","郑道翔");
        values.put("age",19);
        values.put("sex","男");
        db.insert("stutb",null,values);//insert()方法会返回一个long类型的值,表示插入在第几行
        values.clear();//清空数据
        values.put("name","安晨阳");
        values.put("age",20);
        values.put("sex","男");
        db.insert("stutb",null,values);//insert()方法会返回一个long类型的值,表示插入在第几行
        values.clear();//清空数据
        values.put("name","秦鸿俊");
        values.put("age",21);
        values.put("sex","男");
        db.insert("stutb",null,values);//insert()方法会返回一个long类型的值,表示插入在第几行
        values.clear();//清空数据

        values.put("sex","中性");
        db.update("stutb",values,"_id>?",new String[]{"3"});//将id大于3的人性别改成中性
        db.delete("stutb","name like ?",new String[]{"%阳%"});//删除所有名字中带有阳的人
        //获得查询到的数据集合
        Cursor c=db.query("stutb",null,"_id>?",new String[]{"0"},null,null,"name");
        if(c!=null){
            String [] columns=c.getColumnNames();
            while(c.moveToNext()){
                for(String columnName :columns){
                    Log.i("main",c.getString(c.getColumnIndex(columnName)));
                }
            }
            c.close();
        }
        db.close();
    }
}



SQLiteOpenHelper


一段代码

MainActivity.java

package com.example.lenovo.sqlitedemo3;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DBOpenHelper helper=new DBOpenHelper(MainActivity.this,"stu.db",null,1);

        //helper.getReadableDatabase();//获取一个只读的数据库,只能查询,不能写入

        SQLiteDatabase db=helper.getWritableDatabase();//获取一个可读写数据库

        Cursor cursor=db.rawQuery("select * from stutb",null);

        if(cursor!=null){
            String [] cols = cursor.getColumnNames();//得到数据库有哪些列名
            while(cursor.moveToNext()){
                for(String ColumnName : cols){//遍历每列的内容
                    Log.i("info",ColumnName+":"+cursor.getString(cursor.getColumnIndex(ColumnName)));
                }
            }
            cursor.close();
        }
        db.close();
    }
}

DBOpenHelper.java

package com.example.lenovo.sqlitedemo3;

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

/**
 * Created by lenovo on 2018/3/25.
 */

public class DBOpenHelper extends SQLiteOpenHelper {

    public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, 1);
    }

    /*
    首次创建数据库时调用,一般可以把建库建表的操作放在这里执行
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists stutb (_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)");
        db.execSQL("insert into stutb(name,sex,age)values('张昊雨','男',20)");

    }

    /*
    当数据库的版本发生变化时会自动执行
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水之积也不厚,则其负大舟也无力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值