美文网首页Android开发
Android sqlite增删改查

Android sqlite增删改查

作者: 晓尘 | 来源:发表于2020-02-19 01:31 被阅读0次

首先得有一个数据库,这个数据库我们随便取个名字吧,Shujuku.java,放在和mainactivity.java一个地方的。

这个sqlite数据库最重要的是注意空格,少一个空格都会建立失败。


android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class NoteDb extends SQLiteOpenHelper
{
    public static final String TABLE_NAME = "farmer";//表名
    public static final String CONTENT = "content";//textview写入保存的文字
    public static final String WENZHANG="wenzhang";
    public static final String ID = "_id";//ID编号
    public static final String TIME = "time";//时间
//初始的版本号public static final int DB_VERSION = 1;
    public NoteDb(Context context) {
        super(context, "notes", null,1);//这里的1就是版号,如果引用需要在写version
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql ="create table "+TABLE_NAME+" ( "+ID+" integer primary key AUTOINCREMENT, "+CONTENT
            +" TEXT NOT NULL, "+WENZHANG+" TEXT ONT NULL, "+TIME+" TEXT NOT NULL)";//数据库各列,这里的TEXT NOT NULL前面的空格和中间的空格不能少,这里的意思是不为null,
        db.execSQL(sql);//创建数据库
    }
    @Override//升级数据库
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    }//为以后数据库升级提供的方法,想获得关于数据库升级的详情就去这个地方Android sqlite升级
}

以下在数据库中添加数据

一定要在图中的位置有一个上下文,在图中还有一个SQLiteDatebase mysql;也是不能少的,NoteDb abv,在增删改查中也是不必可少的

1-1
public void baocun()
    {
        ContentValues cv = new ContentValues();
        cv.put(NoteDb.CONTENT, a.getText().toString());//将textview转型并存入CONTENT,这里的a.getText().toString());是将已经获取的a做一个转换获取到成为一个string类型的,
        mysql.insert(NoteDb.TABLE_NAME, null, cv);
        mysql.close();//随手关门
    }

接下来介绍一下删,这个删很简单,你给个想要删什么的条件,就可以删掉这行数据库中的数据,这个条件就是图中橙色部分画出来的地方,通常还有是这样写的

public void delete(){
SQLiteDatabase db = mhelper.getReadableDatabase();
String sql = "delete from "+Constant.TABLE_NAME+" where name = l12 ";
db.execSQL(sql);
db.close();
}
2-1

现在学习一下怎么改

更改某行数据用“update”,set重设某个属性值,where设置更改条件!

public void update(){
SQLiteDatabase db = mhelper.getReadableDatabase();
String sql = "update "+Constant.TABLE_NAME+" set age = 24 where name = LIU ";//
db.execSQL(sql);
db.close();
}

最后是查

查询某条数据用“select",但execSQL没有返回值,换用rawQuery方法,返回查询得到的游标。

public void query(){
SQLiteDatabase db = mhelper.getReadableDatabase();
// String sql = "select * from "+Constant.TABLE_NAME+" where name = lcz ";//可通过where设置查询条件
String sql = "select * from "+Constant.TABLE_NAME;
Cursor cursor = db.rawQuery(sql,null);
while (cursor.moveToNext()){ // moveToNext说明还有数据,假设有下一行

下面插播一个题外话,


返回一个Cursor对象,代表数据集的游标,有点类似于JavaSE中的ResultSet。

c.move(int offset); //以当前位置为参考,移动到指定行

c.moveToFirst(); //移动到第一行

c.moveToLast(); //移动到最后一行

c.moveToPosition(int position); //移动到指定行

c.moveToPrevious(); //移动到前一行

c.moveToNext(); //移动到下一行

c.isFirst(); //是否指向第一条

c.isLast(); //是否指向最后一条

c.isBeforeFirst(); //是否指向第一条之前

c.isAfterLast(); //是否指向最后一条之后

c.isNull(int columnIndex); //指定列是否为空(列基数为0)

c.isClosed(); //游标是否已关闭

c.getCount(); //总数据项数

c.getPosition(); //返回当前游标所指向的行数

c.getColumnIndex(String columnName);//返回某列名对应的列索引值

c.getString(int columnIndex); //返回当前行指定列的值


题外话结束。

int index = cursor.getColumnIndex("name");// 获取属性值为“name”的列的索引值
String name = cursor.getColumnName(index);// 获取索引值为index的列的字符串内容
Log.d(TAG, "name ="+name);
}
cursor.close();// Cursor是种资源,不用需关闭
db.close();
}

下面是我觉得挺有用的  查  方法

private void quancha()
    {
        SQLiteDatabase db=mysql.getReadableDatabase();
        StringBuffer i=new StringBuffer();
        String sql = "select * from " + Shujuku.TABLE_NAME;//因为没有设置条件,这里是查询数据库内全部数据
        Cursor sc=db.rawQuery(sql, null);
        while (sc.moveToNext())
        {
            i.append("编号: " + sc.getString(0) + "\n");
i.append("姓名: " + sc.getString(1) + "\n");
i.append("身份证号码: " + sc.getString(2) + "\n");
i.append("所在地区: " + sc.getString(3) + "\n");
i.append("电话号码: " + sc.getString(4) + "\n");
        }//全部装进i这个麻袋里,
qu.setText(i.toString());
    }

相关文章

网友评论

    本文标题:Android sqlite增删改查

    本文链接:https://www.haomeiwen.com/subject/zcdofhtx.html