个人日记本(SQLite实现增删改查)

前端之家收集整理的这篇文章主要介绍了个人日记本(SQLite实现增删改查)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
效果图:

当程序运行后,首先进入日记列表,显示如图:

长时间点击某个日记,将跳转修改日记界面:

点击menu后,显示如图:

点击编辑新日志将跳转添加新日记界面:

选中某个日记,点击删除日记,将弹出提示框:

点击“确定”,删除日记,点击“取消”,返回日记列表页

具体实现方法

实体类:

package cn.bzu.mydiary.model;

public class Diary {
	private int id;
	private String title;
	private String content;
	private String pubdate;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getPubdate() {
		return pubdate;
	}
	public void setPubdate(String pubdate) {
		this.pubdate = pubdate;
	}
	
	
	public Diary(String title,String content,String pubdate) {
		super();
		this.title = title;
		this.content = content;
		this.pubdate = pubdate;
	}
	public Diary(int id,String title,String pubdate) {
		super();
		this.id = id;
		this.title = title;
		this.content = content;
		this.pubdate = pubdate;
	}
	public Diary(int id,String content) {
		super();
		this.id = id;
		this.title = title;
		this.content = content;		
	}
	

}

创建数据库的类(数据库保存在DDMS/data/data/cn.bzu.mydiary/database/diary.db)

package cn.bzu.mydiary.db;

import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;

public class DBHelper extends sqliteOpenHelper{
	private static String DATABASE_NAME="diary.db";
	private static int DATABASE_VERSION=1;

	public DBHelper(Context context) {
		super(context,DATABASE_NAME,null,DATABASE_VERSION);
		
	}

	@Override
	public void onCreate(sqliteDatabase db) {
		db.execsql("create table tb_diary(_id integer primary key autoincrement,title verchar(20),content verchar(1000),pubdate)");
		
	}

	@Override
	public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
		
		
	}

}

数据库操作类

package cn.bzu.mydiary.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.sqliteDatabase;
import cn.bzu.mydiary.db.DBHelper;
import cn.bzu.mydiary.model.Diary;

public class DiaryService {
	private DBHelper dbHelper;
	sqliteDatabase sqliteDatabase = null;

	public DiaryService(Context context) {
		dbHelper = new DBHelper(context);
	}

	/**
	 * 保存日记
	 * 
	 * @param diary
	 */

	public void save(Diary diary) {
		sqliteDatabase = dbHelper.getWritableDatabase();
		String sql = "insert into tb_diary(title,content,pubdate) values (?,?,?)";
		sqliteDatabase.execsql(
				sql,new String[] { diary.getTitle(),diary.getContent(),diary.getPubdate() });
		sqliteDatabase.close();

	}

	// 查询日志
	public List<Diary> getAllDiary() {
		Diary diary = null;
		List<Diary> diaryList = new ArrayList<Diary>();
		sqliteDatabase = dbHelper.getReadableDatabase();
		// 得到游标,最多只有一条数据
		Cursor cursor = sqliteDatabase.rawQuery("select * from tb_diary",null);
		while (cursor.moveToNext()) {
			int id = cursor.getInt(0);
			String title = cursor.getString(cursor.getColumnIndex("title"));
			String content = cursor.getString(cursor.getColumnIndex("content"));
			String pubdate = cursor.getString(cursor.getColumnIndex("pubdate"));
			diary = new Diary(id,title,pubdate);
			diaryList.add(diary);
		}
		cursor.close();
		sqliteDatabase.close();

		return diaryList;

	}

	/**
	 * 根据id删除日记
	 * 
	 * @param id
	 *            日记的id号
	 */
	public void delete(Integer id) {
		sqliteDatabase = dbHelper.getReadableDatabase();
		sqliteDatabase.execsql("delete from tb_diary where _id=?",new Object[] { id });
		sqliteDatabase.close();

	}

	/**
	 * 更新日记
	 * 
	 * @param diary
	 */
	public void update(Diary diary) {
		sqliteDatabase = dbHelper.getReadableDatabase();
		sqliteDatabase.execsql(
				"update tb_diary set title=?,content=?,pubdate=? where _id=?",new Object[] { diary.getTitle(),diary.getPubdate(),diary.getId() });
		sqliteDatabase.close();

	}

	// //获取记录总数
	// public long count(){
	// long count=0;
	// sqliteDatabase sqliteDatabase=dbHelper.getReadableDatabase();
	// Cursor cursor=sqliteDatabase.rawQuery("select count(*) from tb_diary",// null);
	// cursor.moveToFirst();
	// count=cursor.getLong(0);
	// return count;
	// }

}

相应的布局文件:activity_add_diary.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/title" />

    <EditText
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/content" />

    <EditText
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:lines="6" />

    <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save" />

</LinearLayout>

activity_diary.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
     android:background="@drawable/back"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/diary"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/add"
            android:visibility="invisible" />

        <Button
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/delete"
            android:visibility="invisible" />
    </RelativeLayout>

</RelativeLayout>

list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"    
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left" />

    <TextView
        android:id="@+id/pubdate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right" />

</LinearLayout>

DiaryActivity.java

package cn.bzu.mydiary;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.Button;

import android.widget.ListView;
import android.widget.SimpleAdapter;

public class DiaryActivity extends Activity {
	private List<Map<String,?>> diary;
	private ListView diaryList;
	private Button add,delete;
	DiaryService diaryService;
	AlertDialog deleteDiaryAlert;
	SimpleAdapter simpleAdapter;
	int id;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_diary);
		onRestart();
	}

	@Override
	protected void onRestart() {
		super.onRestart();
		diaryList = (ListView) this.findViewById(R.id.diary);
		add = (Button) this.findViewById(R.id.add);
		delete = (Button) this.findViewById(R.id.delete);
		diary = getDiary();
		simpleAdapter = new SimpleAdapter(this,diary,R.layout.list_item,new String[] { "title","pubdate" },new int[] { R.id.title,R.id.pubdate });
		diaryList.setAdapter(simpleAdapter);
		//获取删除时需要的id
		diaryList.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0,View arg1,int position,long arg3) {
				id = (Integer) diary.get(position).get("id");				
			}
		});
		//长时间按该日志,可以跳转修改页面
		diaryList.setOnItemLongClickListener(new OnItemLongClickListener() {

			public boolean onItemLongClick(AdapterView<?> arg0,long arg3) {
				id = (Integer) diary.get(position).get("id");
				String title = (String) diary.get(position).get("title");
				String content = (String) diary.get(position).get("content");
				Diary d = new Diary(id,content);
				Intent intent = new Intent();
				intent.setClass(DiaryActivity.this,AddDiaryActivity.class);
				Bundle bundle = new Bundle();
				bundle.putInt("id",id);
				bundle.putString("title",title);
				bundle.putString("content",content);
				intent.putExtra("diary",bundle);
				startActivity(intent);
				return false;
			}
		});
	}

	private List<Map<String,?>> getDiary() {
		List<Map<String,?>> data = new ArrayList<Map<String,?>>();
		Map<String,Object> item = null;
		diaryService = new DiaryService(DiaryActivity.this);
		List<Diary> list = diaryService.getAllDiary();
		for (int i = 0; i < list.size(); i++) {
			Diary d = list.get(i);
			item = new HashMap<String,Object>();
			item.put("id",d.getId());// ID
			item.put("title",d.getTitle());// 标题
			item.put("content",d.getContent());
			item.put("pubdate",d.getPubdate());// 出版日期
			data.add(item);
		}
		return data;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		// 创建菜单,并设置图表
		menu.add(0,R.id.add,"编辑新日志").setIcon(
				android.R.drawable.ic_input_add);
		menu.add(0,R.id.delete,1,"删除该日志").setIcon(
				android.R.drawable.ic_input_delete);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.add:
			Intent intent = new Intent();
			intent.setClass(DiaryActivity.this,AddDiaryActivity.class);
			startActivity(intent);
			break;
		case R.id.delete:
			deleteDiaryDialog();
			deleteDiaryAlert.show();
			break;

		}
		return super.onOptionsItemSelected(item);
	}

	// 删除日志
	private void deleteDiaryDialog() {
		AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
		alertDialog.setTitle("请确定是否删除日记");
		alertDialog.setPositiveButton("确定",new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog,int which) {						 
						// System.out.print("id:"+id);
						diaryService.delete(id);
						onRestart();
					}
				});
		alertDialog.setNegativeButton("取消",int which) {
						dialog.cancel();

					}
				});
		deleteDiaryAlert = alertDialog.create();

	}

}

AddDiaryActivity.java

package cn.bzu.mydiary;

import java.text.SimpleDateFormat;
import java.util.Date;

import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Shader.TileMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;

public class AddDiaryActivity extends Activity {
	private EditText titleText;
	private EditText contentText;
	private Button save;
	int id;
	

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_diary);
        titleText=(EditText) this.findViewById(R.id.title);
        contentText=(EditText) this.findViewById(R.id.content);
        save=(Button) this.findViewById(R.id.save);
        final Bundle bundle = this.getIntent().getBundleExtra("diary");
        if(bundle==null){
        	 save.setOnClickListener(new OnClickListener() {
     			
     			public void onClick(View v) {
     				String title=titleText.getText().toString();
     				String content=contentText.getText().toString();
     				DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
     				Diary diary=new Diary(title,fomate());
     				diaryService.save(diary);
     				Intent intent=new Intent();
     				intent.setClass(AddDiaryActivity.this,DiaryActivity.class);
     				startActivity(intent);
     			}
     		});
        }else{
        	 titleText.setText(bundle.getString("title"));
             contentText.setText(bundle.getString("content"));
             id =bundle.getInt("id");
             save.setOnClickListener(new OnClickListener() {
      			
      			public void onClick(View v) {
      				String title=titleText.getText().toString();
      				String content=contentText.getText().toString();
      				DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
      				Diary diary=new Diary(id,fomate());
      				diaryService.update(diary);
      				Intent intent=new Intent();
      				intent.setClass(AddDiaryActivity.this,DiaryActivity.class);
      				startActivity(intent);
      			}
      		});

        }
        
       
    }
    public String fomate(){
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日  hh时:mm分:ss秒");
		return simpleDateFormat.format(new Date());
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_add_diary,menu);
        return true;
    }

    
}


可以先建测试类测试一下,确认无误后,再运行,若要测试勿忘在AndroidManifest.xml中配置哦


package cn.bzu.mydiary;

import java.text.SimpleDateFormat;
import java.util.Date;

import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Shader.TileMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;

public class AddDiaryActivity extends Activity {
	private EditText titleText;
	private EditText contentText;
	private Button save;
	int id;
	

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_diary);
        titleText=(EditText) this.findViewById(R.id.title);
        contentText=(EditText) this.findViewById(R.id.content);
        save=(Button) this.findViewById(R.id.save);
        final Bundle bundle = this.getIntent().getBundleExtra("diary");
        if(bundle==null){
        	 save.setOnClickListener(new OnClickListener() {
     			
     			public void onClick(View v) {
     				String title=titleText.getText().toString();
     				String content=contentText.getText().toString();
     				DiaryService diaryService=new DiaryService(AddDiaryActivity.this);
     				Diary diary=new Diary(title,menu);
        return true;
    }

    
}



package cn.bzu.mydiary;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.bzu.mydiary.model.Diary;
import cn.bzu.mydiary.service.DiaryService;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;

import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.Button;

import android.widget.ListView;
import android.widget.SimpleAdapter;

public class DiaryActivity extends Activity {
	private List<Map<String,int which) {
						dialog.cancel();

					}
				});
		deleteDiaryAlert = alertDialog.create();

	}

}



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"    
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left" />

    <TextView
        android:id="@+id/pubdate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right" />

</LinearLayout>



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
     android:background="@drawable/back"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/diary"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/add"
            android:visibility="invisible" />

        <Button
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/delete"
            android:visibility="invisible" />
    </RelativeLayout>

</RelativeLayout>



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/title" />

    <EditText
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/content" />

    <EditText
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:lines="6" />

    <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/save" />

</LinearLayout>



package cn.bzu.mydiary.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.sqliteDatabase;
import cn.bzu.mydiary.db.DBHelper;
import cn.bzu.mydiary.model.Diary;

public class DiaryService {
	private DBHelper dbHelper;
	sqliteDatabase sqliteDatabase = null;

	public DiaryService(Context context) {
		dbHelper = new DBHelper(context);
	}

	/**
	 * 保存日记
	 * 
	 * @param diary
	 */

	public void save(Diary diary) {
		sqliteDatabase = dbHelper.getWritableDatabase();
		String sql = "insert into tb_diary(title,// null);
	// cursor.moveToFirst();
	// count=cursor.getLong(0);
	// return count;
	// }

}



package cn.bzu.mydiary.db;

import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;

public class DBHelper extends sqliteOpenHelper{
	private static String DATABASE_NAME="diary.db";
	private static int DATABASE_VERSION=1;

	public DBHelper(Context context) {
		super(context,int newVersion) {
		
		
	}

}

猜你在找的Sqlite相关文章