zoukankan      html  css  js  c++  java
  • Android中SQLite的使用

    SQLite是Android中内置的数据库,SQLite是轻量级数据库,支持标准的SQL语法,并且支持ACID事物。

    在Android中提供了SQLIteOPenHelper类,帮助我们使用SQLite。SQLite是一个抽象类,其中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须重写。SQLiteOpenHelper 中还有两个非常重要的实例方法, getReadableDatabase() 和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常。

    SQLiteOpenHelper 中有两个构造方法可供重写。一般选择参数少的进行重写。第一个参数是Context,第二个参数是数据库的名称,第三个参数是自己定义的Cursor,一般我们传人null,第四个是当前数据库的版本号。

    1.对数据库的操作

    对数据的操作无非为四种:增删改差,对应到数据库里面是,insert(增加数据),delete(删除数据),update(修改数据),select(查询数据)。

     SQLite中提供了insert()方法进行插入数据,需要提供3个参数,第一个是表名,第二个是一般为null,第三个参数ContentValue对象,包含需要的值.

    提供update()方法进行修改数据,需要提供4个参数,第一是表名,第二个是contentValue对象,第三,四个参数决定对哪些数据进行修改,为指定则默认所有。

    提供delete()方法对数据进行删除,需要提供3个参数,第一是表名,第二,三两个参数指定要删除的数据的条件。未指定则默认所有。

    其他query()方法对数据进行查询,需要提供7个参数,是最复杂的。第一个参数指定表名,第二个参数指定所需要的列,第三、四个参数指定查询哪些数据,第五、六个参数和组有关。一般现在直接用null,最后一个是排序方式。

    下面来看具体的代码,

    首先是布局文件,我们只为每个功能设定了一个按钮

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
     3     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
     4     android:paddingRight="@dimen/activity_horizontal_margin"
     5     android:paddingTop="@dimen/activity_vertical_margin"
     6     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
     7     android:orientation="vertical"
     8     >
     9 
    10 
    11     <Button
    12         android:layout_width="match_parent"
    13         android:layout_height="wrap_content"
    14         android:id="@+id/create_database"
    15         android:text="create database"
    16         />
    17 
    18     <Button
    19         android:layout_width="match_parent"
    20         android:layout_height="wrap_content"
    21         android:id="@+id/add_btn"
    22         android:text="add data"
    23         />
    24 
    25     <Button
    26         android:layout_width="match_parent"
    27         android:layout_height="wrap_content"
    28         android:id="@+id/update_btn"
    29         android:text="update data"
    30         />
    31 
    32     <Button
    33         android:layout_width="match_parent"
    34         android:layout_height="wrap_content"
    35         android:id="@+id/delete"
    36         android:text="delete data"
    37         />
    38     <Button
    39         android:layout_width="match_parent"
    40         android:layout_height="wrap_content"
    41         android:id="@+id/select_btn"
    42         android:text="search a data"
    43         />
    44 
    45 </LinearLayout>
    activity_main.xml

    然后我们定义了MyDataBaseHelper继承DatabaseHelpler,代码如下

     1 public class MyDatabaseHelper extends SQLiteOpenHelper {
     2 
     3 
     4     public static final String CREATE_BOOK = "create table Book ("
     5             +"id integer primary key,"
     6             +"author text,"
     7             +"price real,"
     8             +"pages integer,"
     9             +"name text)";
    10 
    11 
    12     private  Context mContext;
    13 
    14     public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    15         super(context, name, factory, version);
    16         mContext = context;
    17     }
    18 
    19 
    20     @Override
    21     public void onCreate(SQLiteDatabase db) {
    22         db.execSQL(CREATE_BOOK);//用sql语句直接创建表
    23 
    24         Toast.makeText(mContext,"create successed",Toast.LENGTH_LONG).show();
    25     }
    26 
    27     @Override
    28     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    29 
    30     }
    31 }
    View MyDatabaseHelper.java

    最后在MainActivity.java中使用

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     private  MyDatabaseHelper dbHelper;
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_main);
     8         dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,1);
     9         Button createdb = (Button)findViewById(R.id.create_database);
    10         createdb.setOnClickListener(new View.OnClickListener() {
    11             @Override
    12             public void onClick(View v) {
    13                 dbHelper.getWritableDatabase();
    14             }
    15         });
    16 
    17 
    18         Button addData = (Button)findViewById(R.id.add_btn);
    19         addData.setOnClickListener(new View.OnClickListener() {
    20             @Override
    21             public void onClick(View v) {
    22                 SQLiteDatabase db = dbHelper.getWritableDatabase();
    23                 ContentValues values = new ContentValues();
    24                 values.put("id",1);
    25                 values.put("author","Tao Lin");
    26                 values.put("pages",555);
    27                 values.put("price", 65.9);
    28                 values.put("name", "first code");
    29                 db.insert("Book", null, values);//插入第一条数据
    30                 values.clear();
    31                 values.put("id", 2);
    32                 values.put("author","Dan Brown");
    33                 values.put("pages",510);
    34                 values.put("price",19.95);
    35                 values.put("name","the lost symbol");
    36                 db.insert("Book", null, values);//插入第二条数据
    37 
    38 
    39             }
    40         });
    41 
    42         Button updataData = (Button)findViewById(R.id.update_btn);
    43         updataData.setOnClickListener(new View.OnClickListener() {
    44             @Override
    45             public void onClick(View v) {
    46                 SQLiteDatabase db = dbHelper.getWritableDatabase();
    47                 ContentValues values = new ContentValues();
    48                 values.put("price",50.99);
    49                 db.update("Book", values, "name = ?", new String[]{"first code"});
    50             }
    51         });
    52 
    53 
    54         Button deleteData = (Button)findViewById(R.id.delete);
    55         deleteData.setOnClickListener(new View.OnClickListener() {
    56             @Override
    57             public void onClick(View v) {
    58                 SQLiteDatabase db = dbHelper.getWritableDatabase();
    59                 db.delete("Book","pages>?" ,new String[]{"550"});
    60             }
    61         });
    62 
    63         Button selectData = (Button)findViewById(R.id.select_btn);
    64         selectData.setOnClickListener(new View.OnClickListener() {
    65             @Override
    66             public void onClick(View v) {
    67                 SQLiteDatabase db = dbHelper.getWritableDatabase();
    68                 Cursor cursor = db.query("Book",null,null,null,null,null,null);
    69                 if (cursor.moveToNext()){
    70                     do{
    71                         String name = cursor.getString(cursor.getColumnIndex("name"));
    72                         String author = cursor.getString(cursor.getColumnIndex("author"));
    73                         int pages = cursor.getInt(cursor.getColumnIndex("pages"));
    74                         double price = cursor.getDouble(cursor.getColumnIndex("price"));
    75 
    76                         Log.d("MainActivity","Book name is "+name);
    77                         Log.d("MainActivity","Book author is "+author);
    78                         Log.d("MainActivity","Book pages is "+pages);
    79                         Log.d("MainActivity","Book price is "+price);
    80 
    81 
    82                     }while (cursor.moveToNext());
    83 
    84                 }
    85                 cursor.close();
    86 
    87 
    88             }
    89         });
    90 
    91     }
    92 
    93 
    94 }
    MainAcivity.java

    如果你对SQL语句非常熟悉,Android也支持直接用SQL语句对数据库进行访问。具体的下次再说。

  • 相关阅读:
    利用 PhpStorm、Idea 等 IDE 如何 运行/调试 Go 程序 ?
    [Go] 函数/方法 的 变参
    PHP 如何显示大数字,防止显示为 科学计数法 形式
    PHP协程 详解
    [Go] 路径、目录名、包名、文件名
    [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项
    Firefox 及其 插件“个性化设置”备份
    Go
    [Go] template 常用方法详解 及 注意事项
    Go
  • 原文地址:https://www.cnblogs.com/yuqt/p/5079208.html
Copyright © 2011-2022 走看看