设为首页 收藏本站
查看: 1523|回复: 0

[经验分享] Android开发—数据库应用—访问数据表(SQLite OpenHelper) —查询单条记录、修改

[复制链接]

尚未签到

发表于 2016-12-1 11:29:02 | 显示全部楼层 |阅读模式
  /* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称:数据库应用—查询单条记录、修改

  * 作 者: 雷恒鑫

* 完成日期: 2012 年 08 月 14 日

* 版 本 号: V1.0

* 对任务及求解方法的描述部分

* 输入描述:

* 问题描述:

* 程序输出:


* 程序头部的注释结束


*/




在“NotesDbAdapter”类中“查询单条记录”与“修改”的程序代码写好,程序如下:


  //query single entry
public Cursor get(long rowId) throws SQLException {
Cursor mCursor = db.query(true,
DATABASE_TABLE,
new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
KEY_ROWID + "=" + rowId,
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//update
public boolean update(long rowId, String note) {
ContentValues args = new ContentValues();
args.put(KEY_NOTE, note);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}





完整的“NotesDbAdapter.java”程序如下:




package com.demo.android.dummynote;
import java.sql.Date;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class NotesDbAdapter {
private static final String DATABASE_NAME = "notes.db";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_TABLE = "notes";
private static final String DATABASE_CREATE = "creat table notes("
+ "_id INTEGER PRIMARY KEY," + "note TEXT," + "created INTEGER,"
+ "modified INTEGER" + ");";
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
private Context mCtx = null;
private DatabaseHelper dbHelper;
private SQLiteDatabase db;
public NotesDbAdapter(Context ctx) {
this.mCtx = ctx;
}
public NotesDbAdapter open() throws SQLException {
dbHelper = new DatabaseHelper(mCtx);
db = dbHelper.getWritableDatabase();
return this;
}
public void close() {
dbHelper.close();
}
private static final String KEY_ROWID = "_id";
static final String KEY_NOTE = "note";
private static final String KEY_CREATED = "created";
// get all entries
public Cursor getall() {
return db.query(DATABASE_TABLE, //Which table to Select
new String[]{KEY_ROWID,KEY_NOTE,KEY_CREATED}, //Which columns to return
null, //WHERE clause
null, //WHERE arguments
null, //GROUP BY clause
null, //HAVING clause
null);//Order-by clause
}
// add an entry
public long create(String Note) {
Date now = new Date();
ContentValues args = new ContentValues();
args.put(KEY_NOTE, Note);
args.put(KEY_CREATED, now.getTime());
return db.insert(DATABASE_TABLE, null, args);
}
//remove an entry
public boolean delete(long rowID){
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowID,null)>0;
}
//query single entry
public Cursor get(long rowId) throws SQLException {
Cursor mCursor = db.query(true,
DATABASE_TABLE,
new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
KEY_ROWID + "=" + rowId,
null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
//update
public boolean update(long rowId, String note) {
ContentValues args = new ContentValues();
args.put(KEY_NOTE, note);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}

}



注意,以上程序Date now = new Date();有一点小小的错误,编译器提示如下:


构造函数 Date()未定义;




DSC0000.jpg




但是书上Date now = new Date()括号里面却没有参数,大家如果知道是怎么回事,在评论上告诉我一声哈。




顺便把“DummyNote”程序写一下:


package com.demo.android.dummynote;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.content.Intent;
import android.widget.ListView;
///////////////////////////////////////////////////////
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

/////////////////////////////////////////////////////
public class DummyNote extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Tell the list view which view to display when the list is empty
getListView().setEmptyView(findViewById(R.id.empty));
setAdapter();
}
private String[] note_array = {
"gasolin",
"crota",
"louk",
"magicion"
};
private NotesDbAdapter mDbHelper;
private Cursor mNotesCursor;
private void setAdapter(){
mDbHelper = new NotesDbAdapter(this);
mDbHelper.open();
fillData();
}
private void fillData(){
mNotesCursor = mDbHelper.getall();
startManagingCursor(mNotesCursor);
//Create an array to specify the field we want to display in the list
String[] from = new String[]{NotesDbAdapter.KEY_NOTE};
//an array of the fields we want to bind those fields to
int[] to = new int[]{android.R.id.text1};
//Now create a simple cursor adapter
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,mNotesCursor,from,to);
setListAdapter(adapter);
}
private int mNoteNumber = 1;
protected static final int MENU_INSERT = Menu.FIRST;
protected static final int MENU_DELETE = Menu.FIRST+1;
protected static final int MENU_MODIFY = Menu.FIRST+1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_INSERT, 0, "新增记事");
menu.add(0, MENU_DELETE, 0,  "删除记事");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()) {
case MENU_INSERT:
String noteName = "Note " + mNoteNumber++;
mDbHelper.create(noteName);
fillData();
return true;
case MENU_DELETE:
mDbHelper.delete(getListView().getSelectedItemId());
fillData();
return true;
}
return super.onOptionsItemSelected(item);
}
}





大家如果知道问题的解决思路别忘了告诉我一声哈。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308189-1-1.html 上篇帖子: Android周学习Step By Step(6)--Android的数据库SQLite 下篇帖子: (Android学习笔记二)AChartEngine的使用以及在sqlite中存取DATETIME!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表