码迷,mamicode.com
首页 > 数据库 > 详细

SQLite数据库增删改查

时间:2015-08-04 15:08:56      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

一:SQLite数据库简介:

     SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/。

     SQLite数据库文件存在于移动设备的一下目录中:data->data->应用名称->databases 。如下图:

技术分享

二:使用SQLite数据库首相要了解这两个类:SQLiteOpenHelper   SQLiteDatabase.

      1:SQLiteOpenHelper 介绍:

  SQLiteOpenHelper:A helper class to manage database creation and version management.(一个帮助类,来管理数据库创建和数据库版本的管理)。

 

  构造方法(Constructors):

  SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)

     Create a helper object to create, open, and/or manage a database.

  SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)

  Create a helper object to create, open, and/or manage a database.
      第一个参数指定Context,参数name指定数据库的名称,factory为数据库操作工厂,version为数据库版本。
  通过子类继承实SQLiteOpenHelper 并现构造方法,调用是直接创建该类并指定参数。
 
  公共方法(Public Methods)介绍:
技术分享
  
  2:SQLiteDatabase:Exposes methods to manage a SQLite database.(公开的方法来管理SQLite数据库),继承于父类:android.database.sqlite.SQLiteClosable
  可通过SQLiteOpenHelper.getSQLiteDatabase获得实例化:
  例如:
SQLiteDatabase dbWrite = db.getWritableDatabase();

   SQLiteDatabase详细的介绍可参照谷歌方法API:http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

  

三:案例展示:

      创建一个DB 类,继承 SQLiteOpenHelper,factory制定为空,版本指定为1,代码如下:

    (注意:SQLite数据库需要为表创建一个主键,且规定主键的形式为“_id”命名)

 1 package activity.cyq.sqlitelearn;
 2 
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteOpenHelper;
 6 
 7 
 8 public class DB extends SQLiteOpenHelper {
 9     public DB(Context context) {
10         super(context, "db", null, 1);
11         /*db:数据库名称  null:操作数据库工厂  1:数据库版本号*/
12     }
13 
14     @Override
15     public void onCreate(SQLiteDatabase db) {
16         db.execSQL("Create Table user( _id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT DEFAULT NONE , password TEXT DEFAULT NONE) ");
17     }
18 
19     @Override
20     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
21 
22     }
23 }

  案例页面布局如下,通过添加数据按钮实现将用户名和密码添加如数据库中。

技术分享技术分享

  布局XML文件如下 :activity_main.xml   itemview.xml

     activity_main.xml如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context=".MainActivity">
11 
12     <LinearLayout
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:orientation="horizontal">
16 
17         <TextView
18             android:layout_width="wrap_content"
19             android:layout_height="wrap_content"
20             android:layout_weight="1"
21             android:text="用户名:" />
22 
23         <EditText
24             android:id="@+id/usernameEdit"
25             android:layout_width="wrap_content"
26             android:layout_height="wrap_content"
27             android:layout_weight="6" />
28 
29         <TextView
30             android:layout_width="wrap_content"
31             android:layout_height="wrap_content"
32             android:layout_weight="1"
33             android:text="密码:" />
34 
35         <EditText
36             android:id="@+id/passwordEdit"
37             android:layout_width="wrap_content"
38             android:layout_height="wrap_content"
39             android:layout_weight="6" />
40 
41         <Button
42             android:id="@+id/addDataBtn"
43             android:layout_width="wrap_content"
44             android:layout_height="wrap_content"
45             android:layout_weight="1"
46             android:text="添加数据" />
47 
48     </LinearLayout>
49 
50     <RelativeLayout
51         android:layout_width="match_parent"
52         android:layout_height="wrap_content">
53 
54         <LinearLayout
55             android:layout_width="match_parent"
56             android:layout_height="wrap_content"
57             android:layout_centerInParent="true">
58 
59             <TextView
60                 android:layout_width="match_parent"
61                 android:layout_height="wrap_content"
62                 android:layout_centerInParent="true"
63                 android:text="数据展示"
64                 android:textSize="20dp" />
65         </LinearLayout>
66     </RelativeLayout>
67 
68     <LinearLayout
69         android:layout_width="match_parent"
70         android:layout_height="wrap_content">
71 
72         <TextView
73             android:layout_width="wrap_content"
74             android:layout_height="wrap_content"
75             android:layout_weight="1"
76             android:text="用户名"
77             android:textSize="20dp" />
78 
79         <TextView
80             android:layout_width="wrap_content"
81             android:layout_height="wrap_content"
82             android:layout_weight="1"
83             android:text="密    码"
84             android:textSize="20dp" />
85     </LinearLayout>
86 
87     <ListView
88         android:id="@android:id/list"
89         android:layout_width="match_parent"
90         android:layout_height="wrap_content"
91         android:layout_weight="10"
92         android:background="@color/material_blue_grey_800"></ListView>
93 
94 
95 </LinearLayout>

  itemview.xml:如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="horizontal">
 6 
 7     <TextView
 8         android:id="@+id/usernameItem"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_weight="1"
12         android:text="username"
13         android:textSize="20dp" />
14 
15     <TextView
16         android:id="@+id/passwordItem"
17         android:layout_width="wrap_content"
18         android:layout_height="wrap_content"
19         android:layout_weight="1"
20         android:text="password"
21         android:textSize="20dp" />
22 
23 
24 </LinearLayout>

 

  MainActivity中代码如下:

  

 1 package activity.cyq.sqlitelearn;
 2 
 3 
 4 import android.app.AlertDialog;
 5 import android.app.ListActivity;
 6 import android.content.ContentValues;
 7 import android.content.DialogInterface;
 8 import android.database.Cursor;
 9 import android.database.sqlite.SQLiteDatabase;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.widget.AdapterView;
13 import android.widget.Button;
14 import android.widget.EditText;
15 import android.widget.SimpleCursorAdapter;
16 
17 public class MainActivity extends ListActivity implements View.OnClickListener, AdapterView.OnItemLongClickListener {
18 
19     private EditText username;
20     private EditText password;
21     private Button addData;
22     private SQLiteDatabase dbWrite, dbRead;
23     private SimpleCursorAdapter adapter;
24     private DB db;
25 
26 
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         setContentView(R.layout.activity_main);
31 
32         username = (EditText) findViewById(R.id.usernameEdit);
33         password = (EditText) findViewById(R.id.passwordEdit);
34         addData = (Button) findViewById(R.id.addDataBtn);
35         addData.setOnClickListener(this);
36         /*创建数据库*/
37         db = new DB(MainActivity.this);
38         dbWrite = db.getWritableDatabase();
39         dbRead = db.getReadableDatabase();
40 
41         adapter = new SimpleCursorAdapter(MainActivity.this, R.layout.itemview, null, new String[]{"username", "password"},
42                 new int[]{R.id.usernameItem, R.id.passwordItem});
43         setListAdapter(adapter);
44         refresh();
45 
46         getListView().setOnItemLongClickListener(this);
47 
48     }
49 
50     /*刷新ListView数据*/
51     public void refresh() {
52         Cursor cursor = dbRead.query("user", null, null, null, null, null, null, null);
53         adapter.changeCursor(cursor);
54     }
55 
56     /*添加数据点击事件*/
57     @Override
58     public void onClick(View v) {
59         String usernameData = username.getText().toString();
60         String passwordData = password.getText().toString();
61         ContentValues values = new ContentValues();
62         values.put("username", usernameData);
63         values.put("password", passwordData);
64         dbWrite.insert("user", null, values);
65         values.clear();
66 
67         refresh();
68     }
69 
70     /*编辑item按钮的点击事件*/
71 
72 
73     /*ListViewItem的长按事件处理*/
74     @Override
75     public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
76 
77         new AlertDialog.Builder(MainActivity.this).setTitle("警告").setMessage("是否删除该数据").setIcon(R.drawable.delete)
78                 .setPositiveButton("是", new DialogInterface.OnClickListener() {
79                     @Override
80                     public void onClick(DialogInterface dialog, int which) {
81                         Cursor c = adapter.getCursor();
82                         //  c.moveToPosition(position);/*????*/
83                         int item_id = c.getInt(c.getColumnIndex("_id"));
84                         dbWrite.delete("user", "_id=?", new String[]{item_id + ""});
85                         refresh();
86                     }
87                 }).setNegativeButton("否", null)
88                 .show();
89 
90 
91         return true;
92     }
93 }

 

 

 

 

 

 

 

  

             

 

SQLite数据库增删改查

标签:

原文地址:http://www.cnblogs.com/chenyangqi/p/4701721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!