本人愚钝,想写一个大学课程表,之前在数据库方面各种不懂,近来再仔细观摩例程,竟然有些小小收获,特以学习笔记形式记录,方便日后复习,兼作备份代码之用,程序不合理之处敬请拍砖,
DbHelper 继承 SQLiteOpenHelper
注意:
1.SQLiteDatabase.query的用法之一
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
当只查询部分行,通过 String[] columns 参数可选择
亦可通过selection,selectionArgs联合SQlite语句筛选
selection中占位符?要与selectionArgs中一一对应;
2.要掌握数据库,还需深入学习SQLite;
3.数据库中键值对插入行,修改行;
package com.example.helper; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DbHelper extends SQLiteOpenHelper { private static final String table="course"; private static final String DbName= "Mycourse"; public DbHelper(Context context) { super(context,DbName, null, 1); // TODO Auto-generated constructor stub } public Cursor select(int weekday) { SQLiteDatabase db=this.getReadableDatabase(); int value[]={1,2,3,4,5,6,7,8}; String tochar[] = {"1","2","3","4","5","6","7","8"}; //for (int i=0;i<8;i++) value[i]+=weekday*8; //for (int i=0;i<8;i++) tochar[i]=Integer.toString(value[i]); //String[] wherevalue={tochar[0],tochar[1],tochar[2],tochar[3],tochar[4],tochar[5],tochar[6],tochar[7]}; String[] wherevalue={"12","0"}; Cursor cursor=db.query("course", null,"_id<? and _id>?",wherevalue, null, null,null); return cursor; } public long insert(CourseData data) { SQLiteDatabase db=this.getReadableDatabase(); ContentValues cv=new ContentValues(); cv.put("name",data.getName()); cv.put("time",data.getTime()); long rowid=db.insert(table, null, cv); return rowid; } public void delete(CourseData data,int id) { SQLiteDatabase db=this.getReadableDatabase(); String where="_id=?"; String[] wherevalue={Integer.toString(id)}; db.delete(table, where, wherevalue); } public void upgrade(CourseData data,int id) { SQLiteDatabase db=this.getReadableDatabase(); ContentValues cv=new ContentValues(); String where="_id=?"; String[] wherevalue={Integer.toString(id)}; cv.put("name",data.getName()); cv.put("time",data.getTime()); db.update(table,cv, where, wherevalue); } public void initial() { SQLiteDatabase db=this.getReadableDatabase(); CourseData emptydata=new CourseData(); for(int i=0;i<10;i++) { emptydata.setName(String.valueOf(i)); emptydata.setTime(i); insert(emptydata); } } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table course(_id integer primary key autoincrement,name varchar[20],time integer);"); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } }
Activity类:package com.example.sqlite;
注意:
1.ListView 通过invalidateViews重画
2.抛出异常
import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import com.example.helper.CourseData; import com.example.helper.DbHelper; public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private Button bn1; private Button bn2; private Button bn3; private ListView lv; private Cursor cursor; private SimpleCursorAdapter scAdapter; private DbHelper myDbHelper; private int _id; private EditText et1,et2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(ListView)findViewById(R.id.lv); myDbHelper=new DbHelper(this); myDbHelper.initial(); cursor=myDbHelper.select(0); bn1=(Button)findViewById(R.id.bn1); bn2=(Button)findViewById(R.id.bn2); bn3=(Button)findViewById(R.id.bn3); et1=(EditText)findViewById(R.id.etname); et2=(EditText)findViewById(R.id.ettime); scAdapter=new SimpleCursorAdapter (this, R.layout.listview, cursor, new String[]{"name","time"}, new int[]{R.id.CourseName,R.id.CourseTime}); lv.setAdapter(scAdapter); Log.i(TAG, "Adapter OK"); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Log.i(TAG, "CLICK1"); cursor.moveToPosition(arg2); Log.i(TAG, "CLICK2"); _id=cursor.getInt(0); Log.i(TAG, "CLICK3"); et1.setText(cursor.getString(1)); Log.i(TAG, "CLICK4"); et2.setText(String.valueOf(cursor.getInt(2))); Log.i(TAG, cursor.getString(0)); } }); lv.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub SQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem(); _id=sc.getInt(0); et1.setText(cursor.getString(1)); et2.setText(String.valueOf(cursor.getInt(2))); Log.i(TAG, sc.getString(0)); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); bn1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub Log.i(TAG, "BN1 OK"); String name; int time; try { name=et1.getText().toString(); time=Integer.parseInt(et2.getText().toString()); } catch (Exception e) { return; } Log.i(TAG, "ADD?"); add(name, time); Log.i(TAG, "BN1 FINISH"); } }); bn2.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Log.i(TAG, "BN2 OK"); // TODO Auto-generated method stub String name; int time; try { name=et1.getText().toString(); time=Integer.parseInt(et2.getText().toString()); } catch (Exception e) { return; } edit(name, time); Log.i(TAG, "BN2 FINISH"); } }); bn3.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Log.i(TAG, "BN3 OK"); // TODO Auto-generated method stub String name; int time; try { name=et1.getText().toString(); time=Integer.parseInt(et2.getText().toString()); } catch (Exception e) { return; } delete(name, time); Log.i(TAG, "BN3 FINISH"); } }); } private void add(String name,int time) { if (name=="") return; CourseData data=new CourseData(); data.setName(name); data.setTime(time); myDbHelper.insert(data); cursor.requery(); lv.invalidateViews(); et1.setText(""); et2.setText(""); _id=0; } private void edit(String name,int time) { if (name=="") return; CourseData data=new CourseData(); data.setName(name); data.setTime(time); myDbHelper.upgrade(data,_id); cursor.requery(); lv.invalidateViews(); et1.setText(""); et2.setText(""); _id=0; } private void delete(String name,int time) { if (name=="") return; CourseData data=new CourseData(); data.setName(name); data.setTime(time); myDbHelper.delete(data,_id); cursor.requery(); lv.invalidateViews(); et1.setText(""); et2.setText(""); _id=0; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; }
最终运行效果如下:
相关推荐
android数据库SQLite学习笔记.pdf
android基础教程,里边包括新版Android开发教程&笔记1--基础入门,Android开发教程&笔记2--基础入门二,Android开发教程&笔记3--环境...文件存取、数据库编程.Android开发教程+笔记13(待续)--应用、permission、资源
android 数据库SQLite学习笔记.docx
教程+笔记十二--文件存取、数据库编程.zip教程+笔记十二--文件存取、数据库编程.zip
android操作数据库例子,实现私人笔记,需用户名密码登陆!源码全适合初学者!能直接运行,书上看到的代码~比较好分享下!
note app demo sqlitedatabase mvp 笔记 一款以sqlitedatabase为数据库,采用MVP架构的轻便易用的笔记app
android笔记.doc android笔记.pdf 1 系统配置... ..1 1.1 建立SDK开发环境... ...2 1.2 Android源码的编译 ... .6 1.3 编译在G1 上运行的android 2.1(eclair)代码 ... ..9 1.4 编译在G1 上运行的android 2.2(froyo)...
新版Android开发教程&笔记--基础入门一.pdf 新版Android开发教程&笔记--基础入门二.pdf ...新版Android开发教程+笔记十二--文件存取、数据库编程.pdf 新版Android开发教程+笔记十三(待续)--应用、permission、资源.pdf
本程序基于android实现,基本功能包括记录日记、删除日记、编辑日记、查看日记等功能,数据库采用sqlite,程序界面美观。
新版Android开发教程&笔记--基础入门一.pdf 新版Android开发教程&笔记--基础入门二.pdf 新版Android开发教程&笔记三--环境搭建与解析.pdf ...新版Android开发教程+笔记十二--文件存取、数据库编程.pdf
Android学习笔记-SQLite介绍-以及使用Sqlite-进行数据库的创建-完成数据.pdf
不错的笔记 新版Android开发教程&笔记--基础入门一 新版Android开发教程&笔记--基础入门二 ...新版Android开发教程+笔记十二--文件存取、数据库编程 新版Android开发教程+笔记十三(待续)--应用、permission、资源
开办新的Android技术交流群:147064080,欢迎大家加入! android基础教程,里边包括 ...新版Android开发教程+笔记12--文件存取、数据库编程.pdf 新版Android开发教程+笔记13(待续)--应用、permission、资源.pdf
新版Android开发教程&笔记--基础入门一.pdf 新版Android开发教程&笔记--基础入门二.pdf ...新版Android开发教程+笔记十二--文件存取、数据库编程.pdf 新版Android开发教程+笔记十三(待续)--应用、permission、资源.pdf
Android基础教程,入门很好的 新版Android开发教程&笔记1--基础入门一 新版Android开发教程&...新版Android开发教程+笔记12--文件存取、数据库编程.pdf 新版Android开发教程+笔记13(待续)--应用、permission、资源.pdf
包含内容如下: 新版Android开发教程&笔记--基础入门一 新版Android开发教程&笔记--基础入门二 新版Android开发教程&笔记三--环境搭建与解析 ...新版Android开发教程+笔记十二--文件存取、数据库编程
├新版Android开发教程+笔记十二--文件存取、数据库编程.pdf ├新版Android开发教程+笔记十--基础UI编程4.pdf ├新版Android开发教程+笔记十三(待续)--应用、permission、资源.pdf ├新版Android开发教程+笔记十一--...
新版Android开发教程 笔记12--文件存取、数据库编程
├新版Android开发教程+笔记十二--文件存取、数据库编程.pdf ├新版Android开发教程+笔记十--基础UI编程4.pdf ├新版Android开发教程+笔记十三(待续)--应用、permission、资源.pdf ├新版Android开发教程+笔记十一--...
新版Android开发教程+笔记12--文件存取、数据库编程 新版Android开发教程+笔记12--文件存取、数据库编程