在用Android studio开发简易记事本的时候,存储信息阶段总是显示保存失败。这是返回、清空、保存信息部分的代码。这里应该是没有问题的
public void onClick(View v){
switch (v.getId()){
case R.id.note_back:
finish();
break;
case R.id.delete:
content.setText("");
break;
case R.id.note_save:
String noteContent = content.getText().toString().trim();
if(noteContent.length()>0){
if (mSQLiteHelper.insertData(noteContent, DBUtils.getTime())){
showToast("保存成功");
setResult(2);
finish();
}else {
showToast("保存失败");
}
}else{
showToast("保存的记录不能为空!");
}
break;
}
}
下面是封装记录信息的代码
package cn.itcast.notepad.bean;
public class NotepadBean {
private String id;
private String notepadContent; //内容
private String notepadTime; //时间
public String getId(){
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNotepadContent(){
return notepadContent;
}
public void setNotepadContent(String notepadContent) {
this.notepadContent = notepadContent;
}
public String getNotepadTime() {
return notepadTime;
}
public void setNotepadTime(String notepadTime) {
this.notepadTime = notepadTime;
}
}
package cn.itcast.notepad.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
import cn.itcast.notepad.R;
import cn.itcast.notepad.bean.NotepadBean;
public class NotepadAdapter extends BaseAdapter {
private LayoutInflater layoutInflater;
private List<NotepadBean> list;
public NotepadAdapter(Context context, List<NotepadBean> list){
this.layoutInflater = LayoutInflater.from(context);
this.list = list;
}
@Override
public int getCount() {
return list == null? 0 : list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView==null){
convertView = layoutInflater.inflate(R.layout.notepad_item_layout,null);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
NotepadBean noteInfo = (NotepadBean) getItem(position);
viewHolder.tvNotepadContent.setText(noteInfo.getNotepadContent());
viewHolder.tvNotepadTime.setText(noteInfo.getNotepadTime());
return convertView;
}
class ViewHolder{
TextView tvNotepadContent;
TextView tvNotepadTime;
public ViewHolder(View view){
tvNotepadContent = (TextView) view.findViewById(R.id.item_content);
tvNotepadTime =(TextView) view.findViewById(R.id.item_time);
}
}
}
创建数据库的代码
package cn.itcast.notepad.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DBUtils {
public static final String DATABASE_NAME = "Notepad";
public static final String DATABASE_TABLE = "Note";
public static final int DATABASE_VERION = 1;
public static final String NOTEPAD_ID = "id";
public static final String NOTEPAD_CONTENT = "content";
public static final String NOTEPAD_TIME = "notetime";
public static final String getTime(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
return simpleDateFormat.format(date);
}
}
package cn.itcast.notepad.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
import cn.itcast.notepad.bean.NotepadBean;
import cn.itcast.notepad.utils.DBUtils;
public class SQLiteHelper extends SQLiteOpenHelper {
private SQLiteDatabase sqLiteDatabase;
public SQLiteHelper(Context context){
super(context, DBUtils.DATABASE_NAME, null, DBUtils.DATABASE_VERION);
sqLiteDatabase = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+DBUtils.DATABASE_TABLE+"("+DBUtils.NOTEPAD_ID+
" integer primary key autoincrement,"+ DBUtils.NOTEPAD_CONTENT +
"text," + DBUtils.NOTEPAD_TIME+ "text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
//添加数据
public boolean insertData (String userContent,String userTime){
ContentValues contentValues = new ContentValues();
contentValues.put(DBUtils.NOTEPAD_CONTENT,userContent);
contentValues.put(DBUtils.NOTEPAD_TIME,userTime);
return
sqLiteDatabase.insert(DBUtils.DATABASE_TABLE,null,contentValues)>0;
}
//删除数据
public boolean deleteData(String id){
String sql = DBUtils.NOTEPAD_ID+"=?";
String[] contentValuesArray=new String[]{String.valueOf(id)};
return
sqLiteDatabase.delete(DBUtils.DATABASE_TABLE,sql,contentValuesArray)>0;
}
//修改数据
public boolean updateData(String id,String content,String userYear){
ContentValues contentValues = new ContentValues();
contentValues.put(DBUtils.NOTEPAD_CONTENT,content);
contentValues.put(DBUtils.NOTEPAD_TIME,userYear);
String sql = DBUtils.NOTEPAD_ID+"=?";
String[] strings = new String[]{id};
return
sqLiteDatabase.update(DBUtils.DATABASE_TABLE,contentValues,sql,strings)>0;
}
//查询数据
public List<NotepadBean> query(){
List<NotepadBean> list = new ArrayList<NotepadBean>();
Cursor cursor=sqLiteDatabase.query(DBUtils.DATABASE_TABLE,null,null,null,
null,null,DBUtils.NOTEPAD_ID+" desc");
if (cursor!=null){
while (cursor.moveToNext()){
NotepadBean noteInfo = new NotepadBean();
String id = String.valueOf(cursor.getInt
(cursor.getColumnIndex(DBUtils.NOTEPAD_ID)));
String content = cursor.getString(cursor.getColumnIndex
(DBUtils.NOTEPAD_CONTENT));
String time = cursor.getString(cursor.getColumnIndex
(DBUtils.NOTEPAD_TIME));
noteInfo.setId(id);
noteInfo.setNotepadContent(content);
noteInfo.setNotepadTime(time);
list.add(noteInfo);
}
cursor.close();
}
return list;
}
}
错误报告:
到底是哪里出了问题呀....好绝望
求大佬指点0.0
换一种数据存储方法吧 我给你推荐一个依赖 建表存取数据特别方便
implementation 'org.xutils:xutils:3.4.0'
使用前先在Application中初始化
x.Ext.init(this);
x.Ext.setDebug(false);
然后建一个数据库管理类
public class DBManager {
private static final String TAG = DBManager.class.getSimpleName();
public static DBManager dbManager;
public static DBManager getDbManager() {
if (dbManager == null) {
dbManager = new DBManager();
}
return dbManager;
}
private DBManager() {
}
public DbManager getConfig() {
File file = new File(Constant.getDbPath());//这里是自己自定义存放数据库文件的地址
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbName(Constant.DB_NAME)
.setDbVersion(1)
.setDbDir(file)
.setAllowTransaction(true)//开启实务
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
}
})
.setTableCreateListener(new DbManager.TableCreateListener() {
@Override
public void onTableCreated(DbManager db, TableEntity<?> table) {
}
});
return x.getDb(daoConfig);
}
}
然后再新建你想要的实体类
```
@Table(name = "recycleBin")(这句话就是代表建表了)
public class NotepadBean {
@Column(name = "id", isId = true, autoGen = true)(这里则是自增ID)
private String id;
@Column(name = "notepadContent")(以下则都是表字段名称)
private String notepadContent; //内容
@Column(name = "notepadTime")
private String notepadTime; //时间
public String getId(){
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNotepadContent(){
return notepadContent;
}
public void setNotepadContent(String notepadContent) {
this.notepadContent = notepadContent;
}
public String getNotepadTime() {
return notepadTime;
}
public void setNotepadTime(String notepadTime) {
this.notepadTime = notepadTime;
}
}
最后再根据你的实体类去建一个添删改查的Dao
这里就根据你的实体类来
public class NotepadBeanDao {
private static DbManager dbManager;
static {
dbManager = DBManager.getDbManager().getConfig();//这里是打开并获取数据管理配置,然后就可以使用添删改查了
}
/**
* 添加数据
*
* @param recyclebin
*/
public static void addData(NotepadBean notepad) {
try {
dbManager.save(notepad);
} catch (DbException e) {
e.printStackTrace();
}
}
/**
* 查询所有数据
*/
public static List<NotepadBean > findData() {
try {
return dbManager.findAll(NotepadBean .class);
} catch (DbException e) {
e.printStackTrace();
return null;
}
}
/**
* 删除所有数据
*/
public static void deleteAllData() {
try {
//直接删除
dbManager.delete(NotepadBean .class);
} catch (DbException e) {
e.printStackTrace();
}
}
DbManager这个类这中还有很多添删改查的方法,根据需求可做调整修改
调用的方法就不写了,
比如添加数据,直接把你的实体类中俩参数set数据,然后调用Dao中的addData()把你的实体类传进去就存好啦
解决了吗
解决了吗