SQLite作用及用法

SQLite是android自带的微型功能比较健全的手机数据库,他有一大辅助类SQLiteOpenHelper,当我们自己建立一个类必须继承它,并且提供两方面的功能:

第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作;

第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作

下面是实例用法:

public class DatabaseHelper extends SQLiteOpenHelper {
 
 private static final int VERSION = 1;
 //在SQLiteOepnHelper的子类当中,必须有该构造函数
 public DatabaseHelper(Context context, String name, CursorFactory factory,
   int version) {
  //必须通过super调用父类当中的构造函数
  super(context, name, factory, version);
  // TODO Auto-generated constructor stub
 }
 public DatabaseHelper(Context context,String name){
  this(context,name,VERSION);
 }
 public DatabaseHelper(Context context,String name,int version){
  this(context, name,null,version);
 }

 //该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
 @Override
 public void onCreate(SQLiteDatabase db) {
  // TODO Auto-generated method stub
  System.out.println("create a Database");
  //execSQL函数用于执行SQL语句
  db.execSQL("create table user(id int,name varchar(20))");
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // TODO Auto-generated method stub
  System.out.println("update a Database");
 }

}
Activity运行程序

package com.example.sqllite;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.sqlite3.db.DatabaseHelper;

public class MainActivity extends Activity {
 private Button createDatabase,updateDatabase,insert,update,query,delete;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createDatabase = (Button)findViewById(R.id.createDatabase);
        createDatabase.setOnClickListener(new CreateDatabase());
       
        updateDatabase = (Button)findViewById(R.id.updateDatabase);
        updateDatabase.setOnClickListener(new UpdateDatabase());
       
        insert = (Button)findViewById(R.id.insert);
        insert.setOnClickListener(new Insert());
       
        update = (Button)findViewById(R.id.update);
        update.setOnClickListener(new Update());
       
        query = (Button)findViewById(R.id.query);
        query.setOnClickListener(new Query());
       
        delete = (Button)findViewById(R.id.delete);
        delete.setOnClickListener(new Delete());
    }
    class CreateDatabase implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      //创建helper对象,传入参数上下文与数据库名字
      DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
      //单有上面的还不能完成创建,需要将数据读出加载到手机数据库当中完成创建数据库操作
      SQLiteDatabase db = databasehelper.getReadableDatabase();
      Toast.makeText(MainActivity.this, "createDatabase", 3000).show();      
     }
    }
    class UpdateDatabase implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite", 2);
      SQLiteDatabase db = databasehelper.getReadableDatabase();
      Toast.makeText(MainActivity.this, "updateDatabase", 3000).show();      
     }
    }
    class Insert implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      ContentValues values = new ContentValues();
      values.put("id", 1);
            values.put("name", "zhangsan");
      DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
      //写入
      SQLiteDatabase db = databasehelper.getWritableDatabase();
      db.insert("user",null,values);
      Toast.makeText(MainActivity.this, "insert", 3000).show();      
     }
    }
    //更新操作相当于执行sql语句当中的update语句
    //UPDATE table_name SET XXCol=XXX WHERE xxCol =xx..就从哪的值设置成什么样
    class Update implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      DatabaseHelper databasehelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
      SQLiteDatabase db = databasehelper.getWritableDatabase();
      ContentValues values = new ContentValues();
      //将name列的值改成什么
      values.put("name", "lisi");
      //然后更新user参数是要更新的表名
      //第二个是ContentValues对象把name列的值改成lisi
      //第三个是where子句?是占位符
      //第四个一个元素付值到第一个?
      db.update("user", values, "id=?", new String[]{"1"});
      Toast.makeText(MainActivity.this, "Update", 3000).show();      
     }
    }
    class Query implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      //先获得继承sqlitehelper类对象
      DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this, "test_sqlite");
      //然后读取上述类的数据放入到SQLite数据库对象当中
      SQLiteDatabase db = databaseHelper.getReadableDatabase();
      //读取后调用query方法放入到游标对象当中,则让游标指向这个查询数据
      Cursor cursor = db.query("user", new String[]{"id","name"}, "id", null, null, null, null);
      while(cursor.moveToNext()){
       String name = cursor.getString(cursor.getColumnIndex("name"));
       Toast.makeText(MainActivity.this, "query", 3000).show();
      }
            
     }
    }
    class Delete implements OnClickListener{
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
      DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this, "name");
      SQLiteDatabase db = databaseHelper.getWritableDatabase();
      String sql = "delete from test_sqlite where id = 1";
      db.execSQL(sql);
      Toast.makeText(MainActivity.this, "delete", 3000);
     }
    }
}
在命令行中查看数据库命令:

adb shell //进入linux命令行

ls -l 查看目录      cd data   cd data   cd 项目包名(com.example.sqllite)  查看建立的数据库名 ,进入数据库,然后再sqlite3 数据库名查看表,然后select * from 表名

这里我在操作的时候出现了问题,insert不进去数据,query也出现问题,问题已经解决了!“id” ,insert方法

 

SQLite作用及用法_第1张图片

你可能感兴趣的:(数据库)