亡羊补牢

Any comment and advice would be the most appreciated!

Android开发之SQLite数据库

        首先SQLite是一款非常优秀并且广泛使用于嵌入式软件中的数据库,关于其具体的情况,可以去SQLite的官网上查看点击打开链接

       如下是android中关于SQLite的介绍


     其实这些都不重要,只要知道它跟一般我们用的诸如oracle、mysql之类的数据库一样,只是功能受限而已,但是基本的增删改查还是可以胜任的。好了,我们看看今天的程序,跟jdbc一样,我们需要先建立一个dbhelper类来操作数据库,如下

package com.sqliteTest;

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

public class DataBaseHelper extends SQLiteOpenHelper {
	
	private static final int VERSION = 1;
	
	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) {
		this(context, name, VERSION);
		// TODO Auto-generated constructor stub
	}
	public DataBaseHelper(Context context, String name, int version) {
		this(context, name, null, version);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		System.out.println("create a database");
		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("update a database");
	}
	

}
关于构造函数中的参数问题,在eclipse中编程时会自动提示的,这里就不多说了。下面是Activity类

package com.sqliteTest;

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

public class SqliteTest extends Activity {
    private Button createD, updateD, insert, update, query = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        createD = (Button)findViewById(R.id.createD);
        updateD = (Button)findViewById(R.id.updateD);
        update = (Button)findViewById(R.id.update);
        insert = (Button)findViewById(R.id.insert);
        query = (Button)findViewById(R.id.query);
        
        createD.setOnClickListener(new CreateD_Listener());
        updateD.setOnClickListener(new UpdateD_Listener());
        insert.setOnClickListener(new Insert_Listener());
        update.setOnClickListener(new Update_Listener());
        query.setOnClickListener(new Query_Listener());
    }
    
    class CreateD_Listener implements OnClickListener {

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
			SQLiteDatabase database = helper.getReadableDatabase();
		}
    	
    }
    class UpdateD_Listener implements OnClickListener {
    	
    	@Override
    	public void onClick(View arg0) {
    		// TODO Auto-generated method stub
    		DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db", 2);
			SQLiteDatabase database = helper.getReadableDatabase();
    	}
    	
    }
    class Update_Listener implements OnClickListener {
    	
    	@Override
    	public void onClick(View arg0) {
    		// TODO Auto-generated method stub
    		ContentValues value = new ContentValues();
    		value.put("name", "update_thinkpad");
    		DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
			SQLiteDatabase database = helper.getWritableDatabase();
			database.update("user", value, "id=?", new String[]{"2012"});
    	}
    	
    }
    class Insert_Listener implements OnClickListener {
    	
    	@Override
    	public void onClick(View arg0) {
    		// TODO Auto-generated method stub
    		ContentValues value = new ContentValues();
    		value.put("id", 2012);
    		value.put("name", "thinkpad");
    		DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
			SQLiteDatabase database = helper.getWritableDatabase();
			database.insert("user", null, value);
    	}
    	
    }
    class Query_Listener implements OnClickListener {
    	
    	@Override
    	public void onClick(View arg0) {
    		// TODO Auto-generated method stub
    		DataBaseHelper helper = new DataBaseHelper(SqliteTest.this, "test_db");
			SQLiteDatabase database = helper.getReadableDatabase();
			Cursor cursor = database.query("user", new String[]{"id", "name"}, "id=?", 
					new String[]{"2012"}, null, null, null);
			while(cursor.moveToNext()){
				String name = cursor.getString(cursor.getColumnIndex("name"));
				System.out.println("query---"+name);
			}
    	}
    	
    }
}
这里最重要的就是SQLiteOpenHelper类,创建和链接数据库时候必需的,关于具体的解释,来看看官方 文档


从这里,我们可以清楚的了解到其使用方法。

如下是程序运行的结果

点击create database时,结果如下

可以看到创建数据库的时候,执行了onCreate()方法。

点击update database时,如下

可知其执行了onUpgrade()方法。

点击insert和update的时候,没有系统必须要求重写的方法执行,但是我们自己写的逻辑的代码肯定执行了,不信的话,点击query按钮看看,效果如下

name已经从thinkpad更新成update_thinkpad,证明我们首先insert成功,然后update成功,最后query也成功了。


SQLite数据库部分就先说到这里,下面说一个开发此程序期间的一个插曲。创建工程的时候大意了,不小心把Activity类名小写了,在运行的时候在发现,于是我就把小写改成大写了,但是运行的时候报错,说androidManager找不到这个类,这就奇怪了,涉及到类名的地方我都改过了,怎么会找不到呢,后来网上搜了一下解决方法,一哥们总结的很好,如下



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/thinkpadshi/article/details/8197043
个人分类: Android
想对作者说点什么? 我来说一句

安卓开发:写入数据库

2017年09月19日 4KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭