android之SQLite

效果如下:


Main.xml

<LinearLayout 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:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/createDatabase"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/createDatabase" />

    <Button
        android:id="@+id/updateDatabase"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/updateDatabase" />

    <Button
        android:id="@+id/insert"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/insert" />

    <Button
        android:id="@+id/update"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/update" />

    <Button
        android:id="@+id/query"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/query" />

</LinearLayout>

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Sqlite</string>
    <string name="hello_world">Sqlite功能测试</string>
    <string name="createDatabase">创建数据库</string>
    <string name="updateDatabase">更新数据库</string>
    <string name="insert">插入</string>
    <string name="query">查询</string>
    <string name="update">更新</string>

</resources>

DatabaseHelper.java

package com.fzq.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

//DatabaseHelper作为访问sqlite的助手类,提供两个方面的功能
//第一,getReadableDatabase(),getWritebleDatabase()可以获得SQLiteDataBase对象
//第二,提供了oncreate()和onUpgrade()两个会掉函数,允许我们在创建和升级数据库时
public class DatabaseHelper extends SQLiteOpenHelper {
	private static final int VERSION = 1;

	// 在SQLiteOpenHelper的子类当中,必须有该构造函数
	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);
		// TODO Auto-generated constructor stub
	}

	// 该函数是在第一次创建数据库时执行,实际是在第一次得到SQLiteDatabase对象时执行
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		System.out.println("create a  dadabase!");
		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("更新数据库!");

	}

}

MainActivity.java

package com.fzq.sqlite;

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

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

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		createDatabase = (Button) findViewById(R.id.createDatabase);
		updateDatabase = (Button) findViewById(R.id.updateDatabase);
		insert = (Button) findViewById(R.id.insert);
		query = (Button) findViewById(R.id.query);
		update = (Button) findViewById(R.id.update);
		createDatabase.setOnClickListener(new createDatabaseListener());
		updateDatabase.setOnClickListener(new updateDatabaseListener());
		insert.setOnClickListener(new insertListener());
		query.setOnClickListener(new queryListener());
		update.setOnClickListener(new updateListener());

	}

	class createDatabaseListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			// 创建一个DatabaseHelper对象
			DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,
					"test_mars_db");
			// 只有调用了DatabaseHelper对象的getReadableDatabase方法,或者是getWritebleDatabase方法才能真正的被创建
			SQLiteDatabase db = dbHelper.getReadableDatabase();
		}

	}

	class updateDatabaseListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			// 创建一个DatabaseHelper对象
			DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,
					"test_mars_db", 2);
			// 只有调用了DatabaseHelper对象的getReadableDatabase方法,或者是getWritebleDatabase方法才能真正的被创建
			SQLiteDatabase db = dbHelper.getReadableDatabase();

		}

	}

	class insertListener 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 dbHelper = new DatabaseHelper(MainActivity.this,
					"test_mars_db");
			SQLiteDatabase db = dbHelper.getWritableDatabase();
			db.insert("user", null, values);

		}

	}

	class updateListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,
					"test_mars_db");
			SQLiteDatabase db = dbHelper.getWritableDatabase();
			ContentValues values = new ContentValues();
			values.put("name", "zhangsanfeng");

			// 第一个参数是要更新的表名
			// 第二个参数是一个ContentValues对象
			// 第三个参数是where字句
			// /有几个占位符,new String里就应有几个值
			db.update("user", values, "id=?", new String[] { "1" });

		}

	}

	class queryListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,
					"test_mars_db");
			SQLiteDatabase db = dbHelper.getWritableDatabase();

			// 第一个参数table ->表名
			// 第二个参数columns -> 要查询的列
			// 第三个参数selection ->查询的条件(where条件语句后面的)
			// 第四个参数selectionArgs ->对应于selection参数占位符的值
			// 第五个参数groupBy -> 分组
			// 第六个参数 having -> 查询分组的条件限制
			// 第7个参数 orderBy ->对文组结果进行排序
			// 第八个参数limit ->limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。
			Cursor cursor = db.query("user", new String[] { "id", "name" },
					"id=?", new String[] { "1" }, null, null, null, null);
			while (cursor.moveToNext()) {
				String name = cursor.getString(cursor.getColumnIndex("name"));
				System.out.println("query--->" + name);
			}

		}

	}

}
强调!!!

1.SQLiteOpenHelper是将对数据库和表的创建、插入、更新、删除操作进行了简单的封装;

2、SQLiteDataBase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDataBase对象,接下来就可以通过SQLiteDataBase对象来管理和、操作数据库



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值