android(数据库分页显示)_sqlitedatabase

package com.qiao.android11_sqlitedatabase_te;

import java.io.File;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;

//总结;根据SQLitDatabase连接数据库返回一个动作执行者 去执行rawQuery 或者execSQL 或者 beginTransaction 或endTransaction
//首先使用rawQuery参数是一个 sql语句查询字符串,第二个如果不要求偏移量的话可以为空
//
public class MainActivity extends Activity {
	private static final String TAG = "MainActivity";
	private ListView listView_main_show;
	private int pageCount = 0;// 总行数;
	private int everyPageSize = 7;// 每页显示的行数;
	private int countCount = 0;// 总页数;
	private int curPage = 1;// 当前页,初始化为1;
	private int offset = 0;// 偏移量初始化为0;
	private SQLiteDatabase db = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		listView_main_show = (ListView) findViewById(R.id.listView_main_show);

		String path = Environment.getExternalStorageDirectory()
				.getAbsolutePath()
				+ File.separator
				+ "qiao"
				+ File.separator
				+ "android_manual.db";// 获取路径
		Log.i(TAG, "== path" + path);
		db = SQLiteDatabase.openDatabase(path, null, 1);
		// 连接数据库时候使用SQLiteDatabase,这里边三个参数一个是数据路径,第二个可以为空,第三个访问方式
		// 可以使用SQLiteDatabase.open_readonly;选择这种只读模式去连接已经存在的数据库文件。
		String sq = "select id as _id,title from android_datastorage";
		Log.i(TAG, "== sq" + sq);
		Cursor cursor = db.rawQuery(sq, null);// 有他是求总行数的 用的就是Cursor
		Log.i(TAG, "== cursor" + cursor);
		// 1、 上边连接上之后会有有返回值类型SQLiteDatabase db = 。。。。。直接用他有四个方法分别是
		// 2、db.rawQuery。。这哥们专门执行带有占位符的sql查询语句,目前用在分页展示中
		// 3、db.execSQL。。这哥们专门用在执行带有占位符的sql语句--包含(update,insert,delete语句)--总之除了查询都能
		// --上边两个都是带占位符的操作方法
		// 4、db.beginTransaction。。db.endTransaction --- 这两个都是事物
		pageCount = cursor.getCount();// 返回所查询数据的总行数
		Log.i(TAG, "== pageCount" + pageCount);
		countCount = (int) Math.ceil(pageCount / (double) everyPageSize);// 总页数
		Log.i(TAG, "== countCount" + countCount);
		/*
		 * 上边主要是获取数据库路径然后连接数据库,用它的返回值去执行查询返回Cursor结果集,至此,所有的结果都存在结果集中,
		 * 可以用Cursor的方法去获取文件的总行数,getCount(); 至于获得总页数的话,首先先要定义每页有几条数据比如7条8条,
		 * 这些都是自己定义的,看自己的屏幕一屏幕能放下多少个 然后 总行数 / 每行自定义个数 (向上取整)= 总页数
		 */
		fillListView(1);
	}

	public void clickButton(View view) {
		switch (view.getId()) {
		case R.id.button_main_first:
			if (curPage != 1)
				curPage = 1;
			break;
		case R.id.button_main_previous:
			if (curPage >= 2) {
				curPage--;
			} else {
				curPage = 1;
			}
			break;
		case R.id.button_main_next:
			if (curPage <= countCount - 1) {
				curPage++;
			} else {
				curPage = countCount;
			}
			break;
		case R.id.button_main_last:
			if (curPage != countCount)
				curPage = countCount;
			break;
		default:
			break;
		}
		fillListView(curPage);
	}

	public void fillListView(int currentpage) {
		offset = everyPageSize * (curPage - 1);// 偏移量
		String sql = "select id as _id,title from android_datastorage limit?,?";
		Cursor cursor2 = db.rawQuery(sql, new String[] { offset + "",
				everyPageSize + "" });
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(
				MainActivity.this, R.layout.item_listview, cursor2,
				new String[] { "_id", "title" },
				new int[] { R.id.textView_item__main_id,
						R.id.textView_item_title }, 2);
		listView_main_show.setAdapter(adapter);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时有晌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值