记android学习之路----数据持久化之sqlite操作实例1

通过SQLiteDatabase操作数据库实例:

上一节说了,操作数据库有两种形式:SQLiteDatabase、SQLiteOpenHelper;这一节就先通过SQLiteDatabase来采用CURD方法来操作数据库;
在实例中我们添加了六个按钮,分别是创建数表,插入数据,删除数据,修改数据,查询数据,删除表。
这里写图片描述
开干:

创建数据库:

    db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/userdb.db",null);  

特别注意:
在第一次创建数据库的时候是没有database目录的,因此直接执行上面的代码会有异常;
在执行这行代码之前应该判断一下是否有该目录:

        File file= this.getDatabasePath("ceshi.db").getParentFile();
        if(file.exists() == false){
            file.mkdirs();
            String path = file.getPath()+"/ceshi2.db";
        }

创建数据表:

   private void createTable(SQLiteDatabase db){   
    //创建表SQL语句   
    String sql="create table user(_id integer primary key autoincrement,username text,userpassword text)";   
    //执行SQL语句   
    db.execSQL(sql);   
        Log.i("data", "creatTable success");
    }  

点一下创建数据表的按钮:
这里写图片描述
可以看到数据表已经创建成功!


插入数据:

    private void insert(SQLiteDatabase db){   
        //实例化常量值   
        ContentValues mcv = new ContentValues();   
        //添加用户名   
        mcv.put("username","xiaoming");   
        //添加密码   
        mcv.put("userpassword","123456");   
        //调用insert()方法插入数据   
        db.insert("user",null,mcv);  
         Log.i("data", "insert success"); 
    } 

每点一次插入数据,如果成功都会打印信息一次:
这里写图片描述


删除数据:

    private void delete(SQLiteDatabase db) {   
        //删除条件   
        String where_cause = "_id=?";   
        //删除条件参数   
        String[] args = {String.valueOf(2)};   
        //执行删除   
        db.delete("stu_table",where_cause,args);  
        Log.i("data", "delete success"); 
    }  

现在点一下删除按钮,看看打印的结果
这里写图片描述
可以看到提示删除成功,再点一下查询按钮,可以看到已经从id=2开始打印,说明id=1的数据已经被删除;


修改数据

    private void update(SQLiteDatabase db) {   
        //实例化内容值 ContentValues values = new ContentValues();   
        //在values中添加内容   
        values.put("userpassword","888666");   
        //修改条件   
        String where_cause = "_id=?";   
        //修改添加参数   
        String[] args={String.valuesOf(1)};   
        //修改   
        db.update("usertable",values,where_cause,args); 
        Log.i("data", "update success");  
    }  

现在点一下更新按钮,再看打印数据:
这里写图片描述
可以看到提示更新成功,然后再点一下查询数据,可以看到id=1的那条数据的密码已经被改为888666了;


查询数据:

 private void query(SQLiteDatabase db) {
        //查询获得游标,此处只为简单说明问题,不设置复杂的查询条件
        Cursor cursor = db.query("info", null, null, null, null, null, null);
            //遍历游标
               if(cursor.moveToFirst()){
                   do{
                   //获得ID
                   int id = cursor.getInt(0);
                   //获得用户名
                   String username = cursor.getString(1);
                   //获得密码
                   String password = cursor.getString(2);
                   Log.i("data","用户名:"+username+"****"+"密码:"+password+"****id:"+id);

                    } while(cursor.moveToNext());

               }
    }

我按下10次添加数据:
这里写图片描述
可以看到正常的查询到了数据


删除表:

    private void drop(SQLiteDatabase db){   
        //删除表的SQL语句   
        String sql ="DROP TABLE user";   
        //执行SQL   
        db.execSQL(sql); 
        Log.i("data", "drop success");  
    }   

同样,点击删除表按钮,看看是否将表删除:
这里写图片描述
已经打印出drop success;说明表已经被删除;


整体代码:
MainActivity.java

package com.example.lk.sqliteshilione;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.io.File;

public class MainActivity extends AppCompatActivity  implements View.OnClickListener{
    Button buttonCreate;
    Button buttonInsert;
    Button buttonDelete;
    Button buttonUpdate;
    Button buttonQuery;
    Button buttonDrop;
    SQLiteDatabase db;


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

         buttonCreate = (Button) findViewById(R.id.button);
         buttonInsert = (Button) findViewById(R.id.button2);
         buttonDelete = (Button) findViewById(R.id.button3);
         buttonUpdate = (Button) findViewById(R.id.button4);
         buttonQuery = (Button) findViewById(R.id.button5);
         buttonDrop = (Button) findViewById(R.id.button6);
        File file= this.getDatabasePath("ceshi.db").getParentFile();
        if(file.exists() == false){
            file.mkdirs();
            String path = file.getPath()+"/ceshi2.db";
        }
        db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.lk.sqliteshilione/databases/ceshi.db",null);  ;
        buttonCreate.setOnClickListener(this);
        buttonInsert.setOnClickListener(this);
        buttonDelete.setOnClickListener(this);
        buttonUpdate.setOnClickListener(this);
        buttonQuery.setOnClickListener(this);
        buttonDrop.setOnClickListener(this);

    }

    private void createTable(SQLiteDatabase db){
        //创建表SQL语句
        String user_sql="create table if not exists info(_id integer primary key autoincrement,username text,userpassword text)";
        //执行SQL语句
        db.execSQL(user_sql);
        Log.i("data", "creatTable success");
    }

    private void insert(SQLiteDatabase db){
        //实例化常量值
        ContentValues mcv = new ContentValues();
        //添加用户名
        mcv.put("username","xiaoming");
        //添加密码
        mcv.put("userpassword","123456");
        //调用insert()方法插入数据
        db.insert("info", null, mcv);
        Log.i("data", "insert success");
    }

    private void delete(SQLiteDatabase db) {
        //删除条件
        String where_cause = "_id = ?";
        //删除条件参数
        String[] args = {String.valueOf(1)};
        //执行删除
        db.delete("info", where_cause, new String[]{"1"});
        Log.i("data", "delete success");
    }

    private void update(SQLiteDatabase db) {
        //实例化内容值
        ContentValues values = new ContentValues();
        //在values中添加内容
        values.put("userpassword","888666");
        //修改条件
        String where_cause = "_id = ?";
        //修改添加参数
        String[] args= {"1"};
        //修改
        db.update("info",values,where_cause,args);
        Log.i("data", "update success");
    }

    private void query(SQLiteDatabase db) {
        //查询获得游标,此处只为简单说明问题,不设置复杂的查询条件
        Cursor cursor = db.query("info", null, null, null, null, null, null);

        //判断游标是否为空
        if (cursor.moveToFirst()) {
            //遍历游标

               if(cursor.moveToFirst()){
                   do{
                   //获得ID
                   int id = cursor.getInt(0);
                   //获得用户名
                   String username = cursor.getString(1);
                   //获得密码
                   String password = cursor.getString(2);
                   Log.i("data","用户名:"+username+"****"+"密码:"+password+"****id:"+id);

                    } while(cursor.moveToNext());

               }
        }
    }

    private void drop(SQLiteDatabase db){
        //删除表的SQL语句
        String sql ="DROP TABLE info";
        //执行SQL
        db.execSQL(sql);
        Log.i("data", "drop success");
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch(id){
            case R.id.button:
                createTable(db);
                break;
            case R.id.button2:
                insert(db);
                break;
            case R.id.button3:
                delete(db);
                break;
            case R.id.button4:
                update(db);
                break;
            case R.id.button5:
                query(db);
                break;
            case R.id.button6:
                drop(db);
                break;
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.lk.sqliteshilione.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="初次使用sqlite并创建表"
        android:id="@+id/button"
        android:background="#97D1E0"
        android:layout_alignParentEnd="true"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入数据"
        android:id="@+id/button2"
        android:background="#97D1E0"
        android:layout_below="@+id/button"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="49dp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除数据"
        android:id="@+id/button3"
        android:background="#97D1E0"
        android:layout_below="@+id/button2"
        android:layout_alignParentStart="true"
        android:layout_marginTop="35dp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改数据"
        android:id="@+id/button4"
        android:background="#97D1E0"
        android:layout_below="@+id/button3"
        android:layout_alignParentStart="true"
        android:layout_marginTop="39dp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询数据"
        android:id="@+id/button5"
        android:background="#97D1E0"
        android:layout_above="@+id/button6"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="27dp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除表"
        android:id="@+id/button6"
        android:background="#97D1E0"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"/>
</RelativeLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值