hjr-Android:Sqlite数据库

本文介绍了Android开发中SQLite数据库的基本使用方法,包括数据库创建、表结构管理、数据增删改查等核心操作,并提供了常见注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意事项

  1. 首先手机没root是不能直接看数据库文件的,只能通过查询显示到界面上,仿真可以
  2. 数据库不需要先人工创建,直接执行语句,没有数据库的话会自动创建
  3. 布局文件在res文件夹下layout.xml文件夹下,每个xml布局文件都是一个界面,通过setContentView(R.layout.布局文件名)调用布局
  4. 每个Activity都需要在AndroidManifest.xml注册是为了匹配intent请求
  5. @string/变量名,可以应用在value.xml文件中定义的字符串,其他属性同理
  6. 调试程序时不要打开酷狗音乐,与adb冲突
  7. 创建表时会自动生成android_metadata表,用来登记用户的使用语言:zh_cn
  8. 当一张表包含了用 “AUTOINCREMENT” 修饰的列时, sqlite 将自动创建表 “SQLITE_SEQUENCE”
    表SQLITE_SEQUENCE中只有两个字段: name, seq 。

入门使用

Sqlite数据库,查询语句用标准的SQL语法就可以,INSERT,UPDATA等

public class className1 extends SQLiteOpenHelper{//必须继承SQLiteOpenHelper类
private static final int VERSION = 1;//这个是版本,1,2,3等
    private static final String FLAG="className";//这个是Log的标签,直接用类名
    public className1(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);

    }
    public className1(Context context,String name){
        this(context,name,VERSION);
    }
    public className1(Context context,String name,int version){
        this(context, name,null,version);
    }

//以上三个构造函数固定的不用改
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table test(id int,name varchar(20))";//创建一个表,SQL语句可以自己定制
        db.execSQL(sql);//执行Sql语句的格式
        Log.i(FLAG,"创建数据库成功,自动生成表成功!");//Log打印信息
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//这个不用管
        Log.i(FLAG,"更新数据库成功!");<span style="font-family: Arial, Helvetica, sans-serif;">//Log打印信息</span>
    }

把上面的单独作为一个类(三个固定的构造函数,一个创建表,一个不用管)你需要做的就是改动OnCreate里的SQL建表语句

在一个新的类里写上

new className1(this,"databaseName");

这样一个名为databaseName的带有test表的数据库就建好了

注意onCreate里的建表语句只有第一次创建数据库时才会执行,以后想要建新表可以用SQL语句
数据库只两种类型的语句

1,执行,2,查询

className1 object = new className1(this,"databaseName");//例化一个object对象//每次要用到执行或者查询都写一次//databaseName写你要操作的数据库名
Cursor cursor = object.getReadableDatabase().rawQuery("SQL查询语句");//查询语句就是SELECT
getReadableDatabase().execSQL("SQL执行语句");//执行语句就是建表,INSERT,UPDATA等
也就是说如果你想建新表,更新字段,插入等操作你一共需要写两句话 查询会查出数据,也是写两句话,但是查询出的数据还需要处理,要多几句话,下面说查出来的数据怎么处理 主要就是对cursor处理
private static final String FLAG="className";//这个是Log的标签,直接用类名
while(cursor.moveToNext())
{       
    Log.i(FLAG,cursor.getString(0)); //getString里面是每条记录的字段索引,可以根据字段数目更换值
}

读取数据一共需要一个while和一句话

常用查询语句

  1. 如果表不存在则创建
"create table if not exists user (ID integer primary key autoincrement not null,name varchar(20))"
  1. 插入语句
"insert into user(name) values('name')"

while(cursor.moveToNext()),遍历Cursor时getString()索引从0开始
查询语句字段名不用加’ ’
cursor.moveToFirst();实际上是移动到了第二行,遍历时可以用do while
插入字符串时用.toString().trim()去空格

  1. 查询表信息
SELECT  
        col.colorder AS 序号 ,
        col.name AS 列名 ,
        ISNULL(ep.[value], '') AS 列说明 ,
        t.name AS 数据类型 ,
        col.length AS 长度 ,
        ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
        CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
             ELSE ''
        END AS 标识 ,
        CASE WHEN EXISTS ( SELECT   1
                           FROM     dbo.sysindexes si
                                    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
                                                              AND si.indid = sik.indid
                                    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
                                                              AND sc.colid = sik.colid
                                    INNER JOIN dbo.sysobjects so ON so.name = si.name
                                                              AND so.xtype = 'PK'
                           WHERE    sc.id = col.id
                                    AND sc.colid = col.colid ) THEN '√'
             ELSE ''
        END AS 主键 ,
        CASE WHEN col.isnullable = 1 THEN '√'
             ELSE ''
        END AS 允许空
FROM    dbo.syscolumns col
        LEFT  JOIN dbo.systypes t ON col.xtype = t.xusertype
        inner JOIN dbo.sysobjects obj ON col.id = obj.id
                                         AND obj.xtype = 'U'
                                         AND obj.status >= 0
        LEFT  JOIN dbo.syscomments comm ON col.cdefault = comm.id
        LEFT  JOIN sys.extended_properties ep ON col.id = ep.major_id
                                                      AND col.colid = ep.minor_id
                                                      AND ep.name = 'MS_Description'
        LEFT  JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
                                                         AND epTwo.minor_id = 0
                                                         AND epTwo.name = 'MS_Description'
WHERE   obj.name = 'three_output'--表名
ORDER BY col.colorder ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

架构师小侯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值