//当然 这个类是个虚拟(abstract)类,所以你要写个子类出来
//例如:
/** 数据库助手类 */
public class CU_SqlHelper extends SQLiteOpenHelper {
/** 版本号 */
private static final int VERSION = 1
/** 数据库对象 */
private SQLiteDatabase db = null
/** 在SQLiteOepnHelper的子类当中,必须有该构造函数 */
public CU_SqlHelper(Context context, String name, CursorFactory factory, int version) {
// 必须通过super调用父类当中的构造函数
super(context, name, factory, version)
}
public CU_SqlHelper(Context context, String dbName) {
this(context, dbName, VERSION)
}
public CU_SqlHelper(Context context, String dbName, int version) {
this(context, dbName, null, version)
}
/** 该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法 */
@Override
public void onCreate(SQLiteDatabase db) {}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
/** 打开数据库 */
public void openDB() {
db = getWritableDatabase()
}
/** 关闭数据库 */
public void closeDB() {
if (db != null) {
db.close()
}
}
/** 获得数据库 */
public SQLiteDatabase getDB() {
if (db == null) {
openDB()
} else {
db.close()
openDB()
}
return db
}
}
具体的增删查改等 *** 作你就要好好的看一下网上,详细的使用方法很多的
public class MyDbOpenHeler extends SQLiteOpenHelper {private static final String name="zhouke.db"
private static final int version=1
public MyDbOpenHeler(Context context) {
super(context, name, null, version)
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists word(_id integer primary key autoincrement,name varchar(20),age int)")
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
------------------------------------------------
public class Main2Activity extends AppCompatActivity {
ListView lv
MyDbOpenHeler heler
SQLiteDatabase db
SimpleCursorAdapter adapter
EditText et1
//通知
NotificationManager manage
//---
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
lv= (ListView) findViewById(R.id.lv)
//实例化数据库帮助类
heler=new MyDbOpenHeler(this)
//获取一个可读写的数据库 *** 作对象
db=heler.getWritableDatabase()
Cursor word = db.query("word", null, null, null, null, null, "_id desc")
adapter=new SimpleCursorAdapter(this,R.layout.list_ltem,word,
new String[]{"_id","name","age"},new int[]{R.id.tv1,R.id.tv2,R.id.tv3},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER)
lv.setAdapter(adapter)
// if(word.isClosed()){
// word.close()
// }
registerForContextMenu(lv)
//通知的实例化
manage= (NotificationManager) getSystemService(NOTIFICATION_SERVICE)
//---
et1= (EditText) findViewById(R.id.et1)
}
//创建选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1,1,0,"增")
return super.onCreateOptionsMenu(menu)
}
//选项菜单监听事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
View inflate = View.inflate(this, R.layout.dialog, null)
final EditText et1 = (EditText) inflate.findViewById(R.id.et1)
final EditText et2 = (EditText) inflate.findViewById(R.id.et2)
new AlertDialog.Builder(this).setTitle("增加新学生信息").setView(inflate)
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ContentValues cv=new ContentValues()
cv.put("name",et1.getText().toString())
cv.put("age", et2.getText().toString())
long word = db.insert("word", null, cv)
if (word>0){
Toast.makeText(Main2Activity.this,"增加数据成功",Toast.LENGTH_SHORT).show()
Cursor word2 = db.query("word", null, null, null, null, null, "_id desc")
adapter.changeCursor(word2)
//通知---开始
NotificationCompat.Builder builder=new NotificationCompat.Builder(Main2Activity.this)
builder.setSmallIcon(R.drawable.aa)
.setContentText("年龄:"+et2.getText().toString())
.setContentTitle(et1.getText().toString())
.setAutoCancel(true)
manage.notify(1,builder.build())
//通知 --结束
}
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show()
return super.onOptionsItemSelected(item)
}
//创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo)
menu.add(1,2,0,"修改")
menu.add(1,3,0,"删除")
}
//上下文菜单监听事件
@Override
public boolean onContextItemSelected(MenuItem item) {
//获取当前点击项的索引
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo()
int position = info.position
//根据索引获取这一行数据,把它转化为Cursor
Cursor cursor= (Cursor) adapter.getItem(position)
//从结果集中取出id
final int _id = cursor.getInt(0)
switch (item.getItemId()){
case 2:
View inflate = View.inflate(this, R.layout.dialog, null)
final EditText et1 = (EditText) inflate.findViewById(R.id.et1)
final EditText et2 = (EditText) inflate.findViewById(R.id.et2)
//获取单词名称
String name=cursor.getString(1)
String age=cursor.getString(2)
et1.setText(name)
et2.setText(age)
new AlertDialog.Builder(this).setTitle("修改学生信息").setView(inflate)
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ContentValues cv=new ContentValues()
cv.put("name",et1.getText().toString())
cv.put("age", et2.getText().toString())
int word=db.update("word",cv,"_id=?",new String[]{String.valueOf(_id)})
if (word>0){
Toast.makeText(Main2Activity.this,"修改数据成功",Toast.LENGTH_SHORT).show()
Cursor word2 = db.query("word", null, null, null, null, null, "_id desc")
adapter.changeCursor(word2)
}
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show()
break
case 3:
int word = db.delete("word", "_id=?", new String[]{String.valueOf(_id)})
if (word>0){
Toast.makeText(Main2Activity.this,"删除数据成功",Toast.LENGTH_SHORT).show()
Cursor word2 = db.query("word", null, null, null, null, null, "_id desc")
adapter.changeCursor(word2)
}
break
}
return super.onContextItemSelected(item)
}
public void click1(View view) {
//模糊查询
String aa=et1.getText().toString()
Cursor word2 = db.query("word", null, "name like ?", new String[]{"%"+aa+"%"}, null, null, "_id desc")
adapter.changeCursor(word2)
//正常查询
// Cursor word2 = db.query("word", null, "name=?", new String[]{aa}, null, null, "_id desc")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)