一个简单的例子,当点击按钮时进行相应的操作,效果图如下:
项目代码如下:
DatabaseHelper类
package com.example.sqlitedatebasetest; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; /** * * @author 作者 程其春 * @version 创建时间:2015-11-3 上午11:32:55 * 类说明 * SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本,它提供两个方面的功能 * 第一,getReadableDatebase和getWriteableDatebase 可以获得SQLiteDatebase对象, * 通过该对象可以对数据库进行操作 * 第二,提供了onCreate(),onUpgrade两个回调函数,允许我们再创建和更新数据库时,可以进行自己的操作 */ public class DatabaseHelper extends SQLiteOpenHelper{ private static final int VERSION = 1; /** * 在SQLiteOpenHelper的子类当中,必须有该构造函数 * @param context 上下文对象 * @param name 数据库名称 * @param factory * @param version 当前数据库的版本,值必须是整数并且是递增的状态 */ public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public DatabaseHelper(Context context,String name,int version){ this(context,name,null,version); } public DatabaseHelper(Context context, String name){ this(context,name,VERSION); } /** * 该函数是在第一次创建的时候执行,实际上是第一次得到SQLitedatebase对象的时候才会调用这个方法。 */ @Override public void onCreate(SQLiteDatabase db) { System.out.println("create a datebase"); //execSQL用于执行SQL语句 db.execSQL("create table user (id int,name verchar(20))"); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { System.out.println("upgrade a database"); } }
MainActivity类
package com.example.sqlitedatebasetest; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebChromeClient.CustomViewCallback; import android.widget.Button; public class MainActivity extends ActionBarActivity implements OnClickListener { private Button btnCreateDatabase = null; private Button btnUpdateDatabase = null; private Button btnInsert = null; private Button btnUpdate = null; private Button btnQuery = null; private Button btnDelete = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 根据控件id获得相应的控件对象 btnCreateDatabase = (Button) this.findViewById(R.id.btn_createDatebase); btnUpdateDatabase = (Button) this.findViewById(R.id.btn_updateDatebase); btnInsert = (Button) this.findViewById(R.id.btn_insert); btnUpdate = (Button) this.findViewById(R.id.btn_update); btnQuery = (Button) this.findViewById(R.id.btn_query); btnDelete = (Button) this.findViewById(R.id.btn_delete); // 为按钮设置监听器 btnCreateDatabase.setOnClickListener(this); btnUpdateDatabase.setOnClickListener(this); btnInsert.setOnClickListener(this); btnUpdate.setOnClickListener(this); btnQuery.setOnClickListener(this); btnDelete.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { // btn_createDatebase点击事件监听器 case R.id.btn_createDatebase: // 创建了一个DatebaseHelper对象,只执行这句话是不会创建或打开连接的 DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test01_db"); // 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接 SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase(); break; // btn_updateDatebase点击事件监听器 case R.id.btn_updateDatebase: DatabaseHelper dbHelper2 = new DatabaseHelper(MainActivity.this, "test01_db", 2); // 得到一个只读的SQLiteDatabase对象 SQLiteDatabase sqLiteDatabase2 = dbHelper2.getReadableDatabase(); break; // btn_insert点击事件监听器 case R.id.btn_insert: // 创建ContentValues对象 ContentValues values = new ContentValues(); // 向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致 values.put("id", 1); values.put("name", "zhangsan"); // 创建DatabaseHelper对象 DatabaseHelper dbHelper3 = new DatabaseHelper(MainActivity.this, "test01_db", 2); // 得到一个可写的SQLiteDatabase对象 SQLiteDatabase sqLiteDatabase3 = dbHelper3.getWritableDatabase(); // 调用insert方法,就可以将数据插入到数据库当中 // 第一个参数:表名称 // 第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值 // 第三个参数:ContentValues对象 sqLiteDatabase3.insert("test01_db", null, values); break; // btn_update点击事件监听器 case R.id.btn_update: // 创建一个DatabaseHelper对象 DatabaseHelper dbHelper4 = new DatabaseHelper(MainActivity.this, "test01_db", 2); // 得到一个可写的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase4 = dbHelper4.getWritableDatabase(); // 创建一个ContentValues对象 ContentValues values2 = new ContentValues(); values2.put("name", "lisi"); // 调用update方法 // 第一个参数String:表名 // 第二个参数ContentValues:ContentValues对象 // 第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符 // 第四个参数String[]:占位符的值 sqliteDatabase4.update("user", values2, "id=?", new String[] { "1" }); System.out.println("-----------update------------"); break; // btn_query点击事件监听器 case R.id.btn_query: String id = null; String name = null; DatabaseHelper dbHelper5 = new DatabaseHelper(MainActivity.this, "test01_db", 2); SQLiteDatabase sqLiteDatabase5 = dbHelper5.getReadableDatabase(); // 调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象 // 第一个参数String:表名 // 第二个参数String[]:要查询的列名 // 第三个参数String:查询条件 // 第四个参数String[]:查询条件的参数 // 第五个参数String:对查询的结果进行分组 // 第六个参数String:对分组的结果进行限制 // 第七个参数String:对查询的结果进行排序 Cursor cursor = sqLiteDatabase5.query("user", new String[] { "id", "name" }, "id=?", new String[] { "1" }, null, null, null); while(cursor.moveToNext()){ id = cursor.getString(cursor.getColumnIndex("id")); name = cursor.getString(cursor.getColumnIndex("name")); } System.out.println("-------------query------------"); System.out.println("id: "+id); System.out.println("name: "+name); break; // btn_delete点击事件监听器 case R.id.btn_delete: //创建DatabaseHelper对象 DatabaseHelper dbHelper6 = new DatabaseHelper(MainActivity.this,"test01_db",2); //获得可写的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase6 = dbHelper6.getWritableDatabase(); //调用SQLiteDatabase对象的delete方法进行删除操作 //第一个参数String:表名 //第二个参数String:条件语句 //第三个参数String[]:条件值 sqliteDatabase6.delete("user", "id=?", new String[]{"1"}); System.out.println("----------delete----------"); break; default: break; } } }
在虚拟机上运行项目后,如何查看自己已经成功创建了数据表了呢?
可以在eclipse中,选择DDMS,再选择File explorer
找到data/data/自己项目的包名/自己的创建的数据表名
如下图所示:
项目源码已经上传 https://github.com/presCheng/sqliteDatabaseTest.git