SQLite的学习

SQLite的学习,第1张

概述Android系统集成了一个轻量级数据库:SQLite。SQLite 只是一个嵌入式的数据库引擎,适用于资源有限的设备上。 SQLite支持大部分SQL语法,允许开发者使用SQL语句 *** 作数据库的数据,但SQLite不需要安装和启动服务器进程,SQLite数据库只是一个文件。 SQLiteDatabase类,用来 *** 作数据库。它里面的静态方法提供了数据库的构造,当然使用SQLiteOpenHelper



AndroID系统集成了一个轻量级数据库:sqlite。sqlite 只是一个嵌入式的数据库引擎,适用于资源有限的设备上。

sqlite支持大部分sql语法,允许开发者使用SQL语句 *** 作数据库的数据,但sqlite不需要安装和启动服务器进程,sqlite数据库只是一个文件。

sqliteDatabase类,用来 *** 作数据库。它里面的静态方法提供了数据库的构造,当然使用sqliteOpenHelper 会更好,下面会介绍。

数据库的构造,静态方法

public static sqliteDatabase openDatabase(String path,CursorFactory factory,int flags);public static sqliteDatabase openDatabase(String path,int flags,DatabaseErrorHandler errorHandler);public static sqliteDatabase openorCreateDatabase(file file,CursorFactory factory) ;public static sqliteDatabase openorCreateDatabase(String path,CursorFactory factory);

通过名字也能看出来,openorCreateDatabase 当不存在时创建该数据库

数据库的 *** 作,(增删改查)

voID execsql(String sql,Object[] bindArgs); //执行带占位符的SQL语句voID execsql(String sql);Cursor rawquery(String sql,String[] selectionArgs);public long insert(String table,String nullColumnHack,ContentValues values);public int update(String table,ContentValues values,String whereClause,String[] whereArgs)public Cursor query(boolean distinct,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);public int delete(String table,String[] whereArgs);

上面一组适用于SQL语句, 下面一组是通过参数完成SQL语句的功能,具体参数可查看文档

sqliteOpenHelper是androID提供的一个管理数据库的工具类。一般使用它的子类,来管理数据库。

属于抽象类继承他需要实现voID onCreate(sqliteDatabase db) 和voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion)方法,onCreate会在当用户获取数据库,不存在时,系统回调,用户不用管。onUpgrade 在数据库更新时回调
通过getReadableData(),getWritableDatabase()来获取sqliteDatabase对象,其中getReadableData 只能读 *** 作,getWritableDatabase 读写 *** 作。


实例,实现简单的类似单词本的查询添加功能:

MainActivity.java

package com.hipad.wordbook;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import androID.app.Activity;import androID.content.Intent;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;import androID.Widget.EditText;import androID.Widget.Toast;public class MainActivity extends Activity {	MyDatabaseHelper dbHelper;	button insert = null;	button search = null;	@OverrIDe	protected voID onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentVIEw(R.layout.activity_main);		dbHelper = new MyDatabaseHelper(this,"myDict.db3",null,1);		insert = (button)findVIEwByID(R.ID.main_button1);		search = (button)findVIEwByID(R.ID.main_button2);		insert.setonClickListener(new OnClickListener() {						@OverrIDe			public voID onClick(VIEw v) {				String word = ((EditText)findVIEwByID(R.ID.edit1)).getText().toString();				String detail = ((EditText)findVIEwByID(R.ID.edit2)).getText().toString();				insertData(dbHelper.getReadableDatabase(),word,detail);				Toast.makeText(MainActivity.this,"Add Success!",Toast.LENGTH_LONG).show();			}		});				search.setonClickListener(new OnClickListener() {						@OverrIDe			public voID onClick(VIEw v) {				String key = ((EditText)findVIEwByID(R.ID.edit1)).getText().toString();				Cursor cursor = dbHelper.getReadableDatabase().rawquery(						"select * from dict where word like ? or detail like ?",new String[]{"%"+ key +"%","%"+ key +"%"});				Bundle data = new Bundle();				data.putSerializable("data",converCursorToList(cursor));				Intent intent = new Intent(MainActivity.this,ResultActivity.class);				intent.putExtras(data);				startActivity(intent);			}		});	}		protected ArrayList<Map<String,String>> converCursorToList(Cursor cursor){		ArrayList<Map<String,String>> result = new ArrayList<Map<String,String>>();		while(cursor.movetoNext()){			Map<String,String> map = new HashMap<String,String>();			map.put("word",cursor.getString(1));			map.put("detail",cursor.getString(2));			result.add(map);		}		return result;	}	private voID insertData(sqliteDatabase db,String word,String detail){		db.execsql("insert into dict values(null,?,?)",new String[]{word,detail});	}		@OverrIDe	public voID onDestroy(){		super.onDestroy();		if(dbHelper != null){			dbHelper.close();		}	}}

MysqLiteOpenHelper 实现数据库的管理,实现比较简单:
package com.hipad.wordbook;import androID.content.Context;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteDatabase.CursorFactory;import androID.database.sqlite.sqliteOpenHelper;public class MyDatabaseHelper extends sqliteOpenHelper {	final String CREATE_table_sql = "create table dict(_ID integer primary "+	"key autoincrement,detail)";	public MyDatabaseHelper(Context context,String name,int version) {		super(context,name,factory,version);	}	@OverrIDe	public voID onCreate(sqliteDatabase db) {		db.execsql(CREATE_table_sql);	}	@OverrIDe	public voID onUpgrade(sqliteDatabase db,int newVersion) {		System.out.print("----------------------onUpdate Called--------------"				+oldVersion + "----->"+newVersion);			}}

点击查询后,返回界面,使用ListVIEw把结果显示出来:

ResultActivity.java

package com.hipad.wordbook;import java.util.List;import java.util.Map;import androID.app.Activity;import androID.content.Intent;import androID.os.Bundle;import androID.Widget.ListVIEw;import androID.Widget.SimpleAdapter;public class ResultActivity extends Activity{	@OverrIDe	protected voID onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentVIEw(R.layout.sec_activity);		ListVIEw ListeVIEw = (ListVIEw)findVIEwByID(R.ID.ListVIEw);		Intent intent = getIntent();		Bundle data = intent.getExtras();		List<Map<String,String>> List = (List<Map<String,String>>)data.getSerializable("data");		SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this,List,R.layout.simple_line,new String[]{"word","detail"},new int[]{R.ID.simple_text1,R.ID.simple_text2}		);		ListeVIEw.setAdapter(adapter);	}}

布局文件比较简单,这里就省略了。总之,使用sqlite,要属性SQL语句,使用函数参数比较麻烦,大部分人应该不会使用。

总结

以上是内存溢出为你收集整理的SQLite的学习全部内容,希望文章能够帮你解决SQLite的学习所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1171962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存