SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
———————————————————————————————————————————————————————————————
以上是copy来的,说说自己的理解,sqllite数据库是一个轻量级的数据库,在使用时不需要进行繁杂的配置,使用起来很方便。就比如,在手机app上如果需要保存数据,我们可以在data文件夹下创建一个数据库来保存数据,而这个数据库很小,不会占很大的内存。
ok,如何使用?
有两种方法来实现数据库的创建:
. SQLiteDatabase sql=openOrCreateDatabase(getFilesDir()+"sp.db",MODE_PRIVATE,null);
主要的方法:
说到数据库,用的多的方法无非就是增删改查了,在android api中提供了这些方法,而不需要sql语句了:
1.insert();//增
2.delete();//删
3.update();//改
4.query();//查
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
通过一个实例来加强理解:
一个摸拟词典的小应用(将词库的数据用insert()方法插入,然后通过query()查出来),下面是效果图:
1.首先布局(没啥好说的)
2.首先我们来实现一个数据库创建的类
public class AddSQLlite extends SQLiteOpenHelper {
//创建表的sql语句
String sql_create_table ="create table tran (id integer" +
" primary key autoincrement,word char(255),explain char(255))";
public AddSQLlite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version);
}
@Override
//第一次需要创建数据库时调用此方法
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql_create_table);//通过sql语句创表
}
//数据库更新时调用
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("---版本更新-----" + oldVersion + "--->" + newVersion);
}
}
在需要时可以通过构造方法new一个出来。
3.实现mainActivity里面的功能:
功能如下
1.在点击翻译按钮时实现在数据库中查询,并将查询到的数据保存到Listview中
2.点击添加生词按钮时跳转到另一个Activity中
说一下大致思路:在单击事件中获取Edictext中的数据,并通过query方法在数据库中查询此数据,将查到的数据保存到ArrayList中,通过适配器将Arraylist中的数据与listview相关联。最后不要忘记close()数据库。
//先将数据库实现,因为后面要用到
//SQLiteDatabase sql=openOrCreateDatabase(getFilesDir()+"sp.db",MODE_PRIVATE,null);(也可以这样打开数据库)
AddSQLlite sql=new AddSQLlite(this,"sp.db",null,1);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button translation= (Button) findViewById(tran);//翻译按钮
final EditText editText= (EditText) findViewById(R.id.edit1);//中间的编辑框
final ListView listView= (ListView) findViewById(R.id.list);//要显示的解释部分
Button add= (Button) findViewById(R.id.add);//添加生词按钮
//当点击翻译按钮时要在数据库中进行查找
translation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String key=editText.getText().toString();
if (!key.equals("")){
//getReadableDatabase-->以只读的方式打开数据库;query-->查询;
Cursor cursor=sql.query("tran",null,"word=?",new String[]{key},null,null,null);
//创建一个arraylist来存储查询到的数据
ArrayList
4.在另一个Activity中实现插入数据功能
在单击按钮事件中用insert()方法进行数据的插入操作
AddSQLlite sql=new AddSQLlite(this,"sp.db",null,1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
//获取两个edittext组件
final EditText chinese= (EditText) findViewById(R.id.chinese);
final EditText explain= (EditText) findViewById(R.id.explain);
//获取两个按钮
Button ok= (Button) findViewById(R.id.ok);
Button not= (Button) findViewById(R.id.not);
//点击添加按钮将数据加入到数据库
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String first=chinese.getText().toString();
String second=explain.getText().toString();
if (first.equals("")||second.equals("")){
Toast.makeText(AddActivity.this, "不能为空哦", Toast.LENGTH_SHORT).show();
}else{
ContentValues contentValues=new ContentValues();
contentValues.put("word",first);
contentValues.put("explain",second);
sql.getWritableDatabase().insert("tran",null,contentValues);
Toast.makeText(AddActivity.this, "成功", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(AddActivity.this,MainActivity.class);
startActivity(intent);
}
}
});
//点击取消按钮返回上个intent
not.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(AddActivity.this,MainActivity.class);
startActivity(intent);
}
});
}