ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQLite数据库以及增删改查的案例

2020-02-06 18:04:38  阅读:258  来源: 互联网

标签:SQLite NAME COLUMN 改查 db FeedEntry 增删 public String


Android使用开源的与操作系统无关的SQL数据库——SQLite

一:在命令行下创建数据库:

1.启动模拟器后,打开命令行,执行adb shell

2.进入所在工程目录

3.执行sqlite3 mydb创建数据库文件

:表示结尾,--表示注解

二:包Android.database.sqlite包含了使用SQLite数据库的所有API

SQL数据库主要概念之一就是Schema——一个关于如何组织数据库的定义

单表定义表明和列表:

public final class FeedReaderContract{
    public FeedReaderContract(){
        /*Inner class that defines the table contents*/
              public static abstract class FeedEntry implements BaseColumns{
                  public static final String TABLE_NAME="entry";
                  public static final String COLUMN_NAME_ENTRY_ID="entryid";
                  public static final String COLUMN_NAME_TITLE="title";
                  public static final String COLUMN_NAME_SUBTITLE="subtitle";
     }
}

使用SQLiteOpenHelper创建数据库

代码案例:

//从SQLiteOpenHelper派生一个类
public class FeedReaderDbHelper extents SQLiteOpenHelper{
    public static final int DATABASE_VERSION=1;
    public static final String DATABASE_NAME="FeedReader.db";
     //构造函数产生一个库
    public FeedReaderDbHelper(Context context){super(context,DATABASE_NAME,null,DATABASE_VERSION);}
     //重点,库产生之后形成一个表
    public void onCreate(SQLiteDatabase db){db.execSQL(SQL_CREATE_ENTRIES);}
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
        db.execSQL(SQL_DELETE_ENTRIES);onCreate(db);
        }
     public void onDowngrade(SQLiteDatabase db,int oldVersion,int newVersion){
        onUpgrade(db,oldVersion,newVersion);
    }
}
//使用以下语句创建数据库助手类对象
FeedReaderDbHelper mDbHelper =new FeedReaderDbHelper(getContext());

插入数据:

代码案例:

//在私有目录产生db,文件和表,然后插入数据
//插入两种方法
SQLiteDatabase db=new mDbHelper.getWritableDatabase();
//Create a new map of values,where column names are the keys
ContentValues values=new ContentValues();
values.put{FeedEntry.COLUMN_NAME_ENTRY_ID,id);
values.put{FeedEntry.COLUMN_NAME_TITLE,title);
values.put{FeedEntry.COLUMN_NAME_CONTENT,content);
//Insert the new row,returning the primary key values of the new row
long new Rowld;
newRowld=db.inset{
     FeedEntry.TABLE_NAME,
     FeedEntry.COLUMN_NAME_NULLABLE,
     values);

查询数据:

代码案例:

SQLiteDatabase db=mDbHelper.getReadableDatabase();
String[] projection={FeedEntry._ID,FeedEntry.COLUMN_NAME_TITLE,FeedEntry.COLUMN_NAME_UPDATED};
String sortOrder=FeedEntry.COLUMN_NAME_UPDATED+"DESC";
Cursor c=db.query{
    FeedEntry.TABLE_NAME,//表名
    projection,//要查询的列名
    selection,//查询条件
    selectionArgs,//查询条件的参数
    null,//分组条件
    null,//分组条件的参数
    sortOrder,//排序条件
    limit//分页条件
};

 在读数值之前,必须要调用move方法,首先调用moveToFirst()方法,游标到了第一个位置,取值就用get()方法,getString(),getLong()....但是get方法要传入index做参数,这个参数可以通过getColumnIndex()和getColumnIndexThrow()方法获取

//指针置首
cursor.moveToFirst();
//根据给定的列名,取值
long itemld=cursor.getLong{
     cursor.getColumnIndexOrThrow(FeedReaderContract.FeedEntry_ID)
};

删除数据:

要是想删除一个表里的行,就要提供筛选标准来确定要删除的行。

数据库API提供一个机制来创建筛选标准,来防止SQL注入攻击。

//定义查询的WHERE部分
String selection=FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID+"LIKE?";
    //Specify arguments in placeholder order.
    String[] selectionArgs={String.valueOf(rowld)};
    //组装SQL语句
    //delete()方法中

参数1:表名

参数2:WHERE语句

参数3:要查的字段

db.delete{table_name,selection,selectionArgs);

更新数据:

SQLiteDatabase db=mDbHelper.getReadableDatabase();
//列新的值
ContentValues values=new ContentValues();
    values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,title);
//根据ID,确定需要update的列
String selection=FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID+"LIKE?";
    String[] selelectionArgs={String.valueOf(rowld)};
//执行update
int count=db.update{
    FeedReaderDbHelper.FeedEntry.TABLE_NAME,
    values,
    selection,
    selectionArgs);

使用原生SQL语句:

通过databaseHelper.getWritableDatabase()或getReadableDatabase()获取SQLiteDatabase对象后;

插入数据:

db.execSQL("insert into person(name,age)values(?,?)",new Object[]{"hhj",20});

查询数据: 

Cursor cursor=db.rawQuery("select * from person where name like ? and age=?",new String[]{"%ne%","20"});

 

删除数据:

db.execSQL("delete from person where personid=2");

更新数据:

db.execSQL("update person set name='hhj',age=20 where personid=1"};

 

 

 

 

 

 

标签:SQLite,NAME,COLUMN,改查,db,FeedEntry,增删,public,String
来源: https://www.cnblogs.com/hhjing/p/12269421.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有