Android--Sqlite

SQLite数据库存储
  • 文件类型:.db
  • 数据保存路径:/data/data/projectPackage/database/xxx.db
  • 默认情况下其他应用不能访问,当前应用可以通过ContentProvider提供其他应用操作
  • 应用卸载时会删除此数据

Sqlite操作数据库的sql语句基本与mysql一样,但需要注意两点

  • 1,最大的不同在于创建表时可以不用指定字段类型,sql可以适时的自动转换,但除varchar类型以外最好指定类型
  • 2,Sqlite的主键最好名称建议使用_id。

建表语句

  create table employee(
   _id integer primary key autoincrement,:主键自增长
   name varchar,:字符串
   salary double,:小数
   birthday data:日期,可直接插入日期格式字符串
 )

插入语句:

 insert into employee(name salary birthday)values('Tom',13000,'1994-12-12')

删除语句:

delete from employee where _id=2

更新语句:

 update employee set salary=salary+5000 where _id=1

查找语句:

 select * from employee
 select * from employee where _id=3
SQLiteOpenHelper:数据库操作的抽象帮助类
  • SQLiteOpenHelper(Context context,String name,CurorFactory factory,int version):构造方法,指定数据库文件名和版本号
  • abstact void onCreate(SQLiteDatabase db):用于创建表
  • abstact void onUpgrade():用于版本更新
  • SqliteDatabase getReadableDatabase():得到数据库连接
SqliteDatabase:代表与数据库的连接的类
  • long insert():用于执行insert SQL,返回id值
  • int update():用于执行update SQL
  • indelete():用于执行delete SQL
  • Cursor query():用于执行select SQL,返回包含查询结果数据的Cursor
  • void execSql(sql):执行SQL语句
beginTransaction():开启事务
  • setTransactionSuccseeful():设置事务时成功的
  • endtransaction():结束事务,可能提交事务或回滚事务
  • static openDatabase(String path,CursorFactory factory,int flags):得到数据库连接
Cursor:
  • int getCount():匹配的总记录数
  • boolean moveToNext():将游标移动到下一条记录的前面
  • Xxx getXxx(ColumnIndex):根据字段下标得到对应值
  • int getColumnIndex(Columnname):根据字段名得到对应的下标

布局代码:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="CreateDB"
            android:onClick="createDB"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="UPdateDB"
            android:onClick="upDateDB"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="insert"
            android:onClick="inertDB"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="update"
            android:onClick="reContentDB"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="delete"
            android:onClick="deleteDB"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="query"
            android:onClick="testQuery"/>

    </LinearLayout>

数据库子类:
(数据库帮助类)

public class DBHelper extends SQLiteOpenHelper {

    public DBHelper(@Nullable Context context, int version) {
        super(context, "PersonData.db" , null, version);
    }

    /**
     * 什么时候会创建数据库文件:
     * 1,当数据库文件不存在
     * 2,连接数据库
     *
     * 当数据库文件调用时调用(1次)
     * 此方法作用:
     * 建表
     * 插入一些初始化数据
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.e("TAG","DB onCreate");
        //建表
        String str="Create table person(_id integer primary key autoincrement,name varchar,age int)";
        db.execSQL(str);
        //插入初始数据
        db.execSQL("insert into person(name,age)values('Tom',11)");
        db.execSQL("insert into person(name,age)values('Sam',12)");
    }

    //当传入的版本号大于数据库的版本号时调用
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.e("TAG","DB OnUpgrade");
    }
}

Java代码:

public class MySqlite extends AppCompatActivity {

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

    /**
     * 创建库
     */
    public void createDB(View view){
        DBHelper dbHelper=new DBHelper(this,1);
        //获得连接
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        Toast.makeText(this,"创建数据库",Toast.LENGTH_LONG).show();
    }

    /**
     *更新数据库
     */
    public void upDateDB(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        Toast.makeText(this,"更新数据库",Toast.LENGTH_LONG).show();
    }

    /**
     * 插入数据
     */
    public void inertDB(View view){

        //得到连接
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //插入数据
        ContentValues values=new ContentValues();
        values.put("name","Boml");
        values.put("age",22);
        long id=database.insert("person",null,values);
        //关闭
        database.close();
        //提示
        Toast.makeText(this,"id="+id,Toast.LENGTH_LONG).show();
    }

    /**
     * 更新数据
     */
    public void reContentDB(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //更新数据
        ContentValues values=new ContentValues();
        values.put("name","Jack");
        values.put("age",13);
        database.update("person",values,"_id=?",new String[]{"3"});
        database.close();
        Toast.makeText(this,"更新数据",Toast.LENGTH_LONG).show();
    }

    public void deleteDB(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //删除数据
        ContentValues values=new ContentValues();
        database.delete("person","_id=4",null);
        Toast.makeText(this,"删除数据",Toast.LENGTH_LONG).show();
    }
    /**
     * 查询表数据
     */
    public void testQuery(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();


        //执行query select * from person
        Cursor cursor=database.query("person",null,null,null,null,null,null);
        //查询id为2的数据
        //*Cursor cursor=database.query("person",null,"_id=?",new String[]{"2"},null,null,null);
        //得到的总匹配数
        int num=cursor.getCount();
        //遍历所有数据
        while(cursor.moveToNext()){
            int age=cursor.getInt(0);
            String name=cursor.getString(1);

            Log.e("TAG",name + "---"+age);
        }
        //关闭
        cursor.close();
        database.close();
        Toast.makeText(this,"表中数据:"+num,Toast.LENGTH_LONG).show();
    }

}

添加数据代码:

   /**
     * 插入数据
     */
    public void inertDB(View view){

        //得到连接
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //插入数据
        ContentValues values=new ContentValues();
        values.put("name","Boml");
        values.put("age",22);
        long id=database.insert("person",null,values);
        //关闭
        database.close();
        //提示
        Toast.makeText(this,"id="+id,Toast.LENGTH_LONG).show();
    }

更新数据代码:

  /**
     * 更新数据
     */
    public void reContentDB(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //更新数据
        ContentValues values=new ContentValues();
        values.put("name","Jack");
        values.put("age",13);
        database.update("person",values,"_id=?",new String[]{"3"});
        database.close();
        Toast.makeText(this,"更新数据",Toast.LENGTH_LONG).show();
    }

删除数据代码:

public void deleteDB(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //删除数据
        ContentValues values=new ContentValues();
        database.delete("person","_id=4",null);
        Toast.makeText(this,"删除数据",Toast.LENGTH_LONG).show();
    }

查询数据代码:

  /**
     * 查询表数据
     */
    public void testQuery(View view){
        DBHelper dbHelper=new DBHelper(this,2);
        SQLiteDatabase database=dbHelper.getReadableDatabase();


        //执行query select * from person
        Cursor cursor=database.query("person",null,null,null,null,null,null);
        //查询id为2的数据
        //*Cursor cursor=database.query("person",null,"_id=?",new String[]{"2"},null,null,null);
        //得到的总匹配数
        int num=cursor.getCount();
        //遍历所有数据
        while(cursor.moveToNext()){
            int age=cursor.getInt(0);
            String name=cursor.getString(1);

            Log.e("TAG",name + "---"+age);
        }
        //关闭
        cursor.close();
        database.close();
        Toast.makeText(this,"表中数据:"+num,Toast.LENGTH_LONG).show();
    }
发布了50 篇原创文章 · 获赞 0 · 访问量 2903

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/104103809