ContentPRovider的实现过程
1、定义一个CONTENT_URI常量,提供了访问ContentProvider的标识符。
?| 1 | publicstatic final Uri CONTENT_URI = Uri.parse("content://com.example.codelab.transportationprovider"); |
2、在AndroidManifest.xml当中进行声明。
?| 1234 | <!-- android:name是完成ContentProvider类的全称 android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错 --> <provider android:name="com.bj.FirstContentProvider"android:authorities="com.bj.firstcontentprovider"></provider> |
示例:| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}SQLite操作类DBOpenHelper| packagecom.zking.db;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;/** * Created by Administrator on 2016/12/14. */public classDbHelperextendsSQLiteOpenHelper {/** * @paramcontext上下文*@paramname数据库名字(文件名)*@paramfactory数据库工厂(null)*@paramversion数据库版本 */publicDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,intversion) {super(context, name, factory, version); Log.i("test","构造方法"); } /** * 创建表的操作 * @paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} | |
packagecom.zking.db;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;/** * Created by Administrator on 2016/12/14. */public class DbHelperextendsSQLiteOpenHelper {/** *@paramcontext上下文 *@paramname数据库名字(文件名) *@paramfactory数据库工厂(null) *@paramversion数据库版本 */publicDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,intversion) {super(context, name, factory, version); Log.i("test","构造方法"); }/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}内容提供者| 1234 | packagecom.zking.db;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;/** * Created by Administrator on 2016/12/14. */public class DbHelperextendsSQLiteOpenHelper {/** *@paramcontext上下文 *@paramname数据库名字(文件名) *@paramfactory数据库工厂(null) *@paramversion数据库版本 */publicDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,intversion) {super(context, name, factory, version); Log.i("test","构造方法"); }/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}示例:| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}packagecom.zking.provide;import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;import android.support.annotation.Nullable;import android.util.Log;import com.zking.db.DbHelper;/** * Created by Administrator on 2017/2/6. */public class provide_person extends ContentProvider{ private SQLiteDatabase db; private UriMatcher uriMatcher; @Override public boolean onCreate() { Log.i("test","PersonProvider,onCreate"); DbHelper dbHelper=new DbHelper(getContext(),"question.db",null,1); db = dbHelper.getReadableDatabase(); //URI匹配器 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //给URI匹配器中添加匹配规则 uriMatcher.addURI("com.zking.g150725_android16_sqlite.PERSON","person",0); uriMatcher.addURI("com.zking.g150725_android16_sqlite.PERSON","person/#",1); return false; } @Nullable @Override public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) { Log.i("test","query"); //开始匹配 Cursor cursor=null; cursor=db.query(false,"person",strings,s,strings1,null,null,s1,null); return cursor; } @Nullable @Override public String getType(Uri uri) { Log.i("test","getType"); return null; } @Nullable @Override public Uri insert(Uri uri, ContentValues contentValues) { Log.i("test","insert"); db.insert("person",null,contentValues); return null; } @Override public int delete(Uri uri, String s, String[] strings) { db.delete("person",s,strings); return 0; } @Override public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { db.update("person",contentValues,s,strings); return 0; }} |
import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}activity_main.xml/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}示例:| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}| 1234 | <!-- android:name是完成ContentProvider类的全称 android:authorities是和FirstProvidermetaData中的常量AUTHORITY的值一样,否则会报错 --> <provider android:name="com.bj.FirstContentProvider"android:authorities="com.bj.firstcontentprovider"></provider> |
/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}示例:| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}activity_main.xml?packagecom.zking.db;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;/** * Created by Administrator on 2016/12/14. */public class DbHelperextendsSQLiteOpenHelper {/** *@paramcontext上下文 *@paramname数据库名字(文件名) *@paramfactory数据库工厂(null) *@paramversion数据库版本 */publicDbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,intversion) {super(context, name, factory, version); Log.i("test","构造方法"); }/** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }}示例:| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="zking.com.g150825_andriod24.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edit_query1" android:hint="请输入内容" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" android:id="@+id/edit_query2" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入姓名" android:id="@+id/addname" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入年龄" android:id="@+id/addage" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="增加" android:id="@+id/ad" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入要修ID" android:id="@+id/updateid" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入姓名" android:id="@+id/updatename" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入年龄" android:id="@+id/updateage" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="修改" android:id="@+id/update" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入要删除的ID" android:id="@+id/deleteid" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="删除" android:id="@+id/delete" /></LinearLayout>示例:
| 1234 | /** * 创建表的操作 *@paramsqLiteDatabase*/@Overridepublic voidonCreate(SQLiteDatabase sqLiteDatabase) { Log.i("test","onCreate");//创建表sqLiteDatabase.execSQL("create table person(_id integer primary key autoincrement,name,age)"); }//数据库版本:低---->高@Overridepublic voidonUpgrade(SQLiteDatabase sqLiteDatabase,inti,inti1) { Log.i("test","onUpgrade"); }} |
package com.zking.g150825_andorid16_sqlite;import android.app.ListActivity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;import android.widget.Toast;import com.zking.db.DbHelper;public class MainActivity extends ListActivity { private EditText et_main_id; private EditText et_main_name; private EditText et_main_age; private SQLiteDatabase db; private SimpleCursorAdapter simpleCursorAdapter; private Cursor cursor; private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化DbHelper DbHelper dbHelper=new DbHelper(this,"person.db",null,2); //获取SQLiteDataBase对象(类似Hibernate中Session) db = dbHelper.getReadableDatabase(); //获取ListView listview = getListView(); initViews(); //查询所有 cursor = db.query(false,"person",null,null,null,null,null,null,null); //循环游标 //把值放入list //设置适配器 //SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item_listview, cursor,new String[]{"_id","name","age"},new int[]{R.id.tv_item_list_id,R.id.tv_item_list_name,R.id.tv_item_list_age}); listview.setAdapter(simpleCursorAdapter); initEvents();//初始化事件 } private void initEvents() { //给ListView添加长按事件 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { //获取点击的每一行的值 LinearLayout root= (LinearLayout) view; String id=((TextView)root.findViewById(R.id.tv_item_list_id)).getText().toString(); String name=((TextView)root.findViewById(R.id.tv_item_list_name)).getText().toString(); String age=((TextView)root.findViewById(R.id.tv_item_list_age)).getText().toString(); //弹出对话框(自定义) final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final AlertDialog dialog=builder.create(); //设置点击空白,不取消对话框 dialog.setCancelable(false); //解析布局文件 View v=getLayoutInflater().inflate(R.layout.dialog_listview,null); ((TextView)v.findViewById(R.id.tv_dialog_listview_id)).setText("修改:"+id); ((EditText)v.findViewById(R.id.et_dialog_listview_name)).setText(name); ((EditText)v.findViewById(R.id.et_dialog_listview_age)).setText(age); ((Button)v.findViewById(R.id.btn_dialog_listview_sure)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "执行修改操作", Toast.LENGTH_SHORT).show(); dialog.dismiss();//关闭当前的对话框 } }); ((Button)v.findViewById(R.id.btn_dialog_listview_cancel)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss();//关闭当前的对话框 } }); dialog.setView(v); dialog.show(); return true; } }); } private void initViews() { et_main_id = (EditText) findViewById(R.id.et_main_id); et_main_name = (EditText) findViewById(R.id.et_main_name); et_main_age = (EditText) findViewById(R.id.et_main_age); } public void save(View view){ String name=et_main_name.getText().toString(); int age=Integer.parseInt(et_main_age.getText().toString()); //保存到数据库中 ContentValues values=new ContentValues();//Map values.put("name",name); values.put("age",age); values.putNull("_id"); db.insert("person","name",values); Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); cursor=queryAllPerson(null); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); } public Cursor queryAllPerson(String name){ //Cursor cursor=db.query(false,"person",null,null,null,null,null,null,null); Cursor cursor; if(!"".equals(name)){ Log.i("test","name="+name); cursor=db.rawQuery("select * from person where name like ? limit ?,?",new String[]{"%"+name+"%",2+"",2+""}); }else{ Log.i("test","查询所有"); cursor = db.rawQuery("select * from person",null); } return cursor; } public void query(View view){// if(!TextUtils.isEmpty(et_main_name.getText())){ String name=et_main_name.getText().toString(); cursor=queryAllPerson(name); //通知适配器发生改变 simpleCursorAdapter.changeCursor(cursor); }}