//cursor.move(offset) 将记录的指针向上或者向下移动指定的行数,offset是正数代表向下,如果是负数代表向上
//cursor.moveToFirst() 移动到第一条数据,并且判断第一条数据是否存在
//cursor.moveToLast() 移动到最后一条数据,并且判断最后一条数据是否存在
//cursor.moveToNext() 移动到下一条数据,并且判断下一条数据是否存在
//cursor.moveToPrevious() 移动到上一条数据,并且判断上一条数据是否存在
//cursor.moveToPosition(position) 移动到某一条数据上,并且判断当前数据是否存在
MainActivity.java
package com.example.zjday14_sqlite;
import com.example.zjday14_sqlite.service.DbService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button creatBtn,updateBtn,addBtn,deleteBtn,gaiBtn,queryBtn;
private DbService dbService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
dbService =new DbService(getApplicationContext());
MyListener myListener =new MyListener();
creatBtn.setOnClickListener(myListener);
updateBtn.setOnClickListener(myListener);
addBtn.setOnClickListener(myListener);
deleteBtn.setOnClickListener(myListener);
gaiBtn.setOnClickListener(myListener);
queryBtn.setOnClickListener(myListener);
}
private void initView() {
creatBtn=(Button) findViewById(R.id.creat_btn_id);
updateBtn=(Button) findViewById(R.id.update_btn_id);
addBtn=(Button) findViewById(R.id.add_btn_id);
deleteBtn=(Button) findViewById(R.id.delete_btn_id);
gaiBtn=(Button) findViewById(R.id.gai_btn_id);
queryBtn=(Button) findViewById(R.id.query_btn_id);
}
public class MyListener implements OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()) {
//创建数据库
case R.id.creat_btn_id:
dbService.creatDB();
break;
case R.id.update_btn_id:
break;
//增加数据
case R.id.add_btn_id:
dbService.insertData();
break;
//删除数据
case R.id.delete_btn_id:
dbService.deleteData();
break;
//修改数据
case R.id.gai_btn_id:
dbService.updateData();
break;
//查询数据
case R.id.query_btn_id:
dbService.queryData();
break;
default:
break;
}
Toast.makeText(getApplicationContext(), "执行成功", Toast.LENGTH_SHORT).show();
}
}
}
DbOpenHelper.java
package com.example.zjday14_sqlite.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DbOpenHelper extends SQLiteOpenHelper{
/**
* 构造方法
*Context context,
*String name 数据库名称
* CursorFactory factory 游标工厂
* int version 数据库版本号
*/
public DbOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public DbOpenHelper(Context context) {
super(context, "xx", null, 1);
}
/**
* 创建数据库
*
* 第一次执行时调用此方法(只调用一次)
*
* SQLiteDatabase db 操作数据库的类
*/
@Override
public void onCreate(SQLiteDatabase db) {
//创建表
db.execSQL("create table user(_id integer primary key autoincrement,name varchar(50),age integer)");
}
/**
* 更新数据库
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
DbService.java
package com.example.zjday14_sqlite.service;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.example.zjday14_sqlite.db.DbOpenHelper;
public class DbService {
private Context context;
private DbOpenHelper dbOpenHelper;
public DbService(Context context) {
super();
this.context = context;
dbOpenHelper =new DbOpenHelper(context);
}
//创建数据库
public void creatDB(){
// dbOpenHelper =new DbOpenHelper(context);
//只有调用此方法后数据才能创建,在openhelper中已经创建了表
dbOpenHelper.getWritableDatabase();
}
// 插入数据
public void insertData(){
//第一种方式:直接执行SQL语句
/*
//SQLiteDatabase 管理和操作数据库
SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
//执行插入语句
db.execSQL("insert into user(name,age) values('张三',18)");
db.execSQL("insert into user(name,age) values('李四',18)");
db.execSQL("insert into user(name,age) values('王五',18)");
db.execSQL("insert into user(name,age) values('孙六',18)");*/
//第二种方式:利用Android中已经封装好的方法
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
/**
* table 表名
* nullColumnHack 可以为null,如果nullColumnHack为空,insert into user() values()
* values 值 ContentValues
*/
ContentValues values = new ContentValues();
values.put("name", "赵四");
values.put("age", "19");
db.insert("user", null, values);
}
//修改数据
public void updateData(){
//第一种方式:
/*
SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
db.execSQL("update user set age=? where _id=?", new String[]{"20","4"});*/
//第二种方式
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
/**
* update user set amount=? where _id=?
*
* table 表名
* values 值ContentValues (key = 字段名称 value = 值)
* whereClause where语句后面的字句
* whereArgs 占位符的取值
*/
ContentValues values = new ContentValues();
values.put("name", "刘能");
db.update("user", values, "_id=?", new String[]{"2"});
}
//删除数据
public void deleteData(){
//第一种方式:
/*SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
db.execSQL("delete from user where _id=4 ");*/
//第二种方式:
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
/**
* table 表名
* whereClause where之后的字句
* whereArgs 占位符的取值
*/
db.delete("user", "_id=?", new String[]{"2"});
}
//查询数据
public void queryData(){
//第一种方式:
/*SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
//使用sql语句查询是注意,db.如rawquery得到的是个游标
Cursor cursor= db.rawQuery("select * from user", null);
if(cursor.moveToNext())
{
//从游标中取出数据(列的编号)
//得到列的编号cursor.getColumnIndex("name")
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.i("info", name+","+age);
}*/
//第二种方式:
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
/**
* distinct 是否去除重复
* table 表名
* columns 查询的列名 new String[]{"name","age","amount"}
* selection where 之后的字句 _id=?
* selectionArgs 条件占位符的值 new String[]{"2"}
* groupBy 分组
* having 放置到where之后,再次筛选
* orderBy 排序
* limit 区间
*/
Cursor cursor = db.query("user", new String[]{"name","age","amount"}, "_id=?", new String[]{"2"}, null, null, null);
{
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.i("info", "您查询的姓名是:" + name);
}
}
}
对于数据库的版本库更新模糊,,,,,,,,,