Android开发简易记事本,信息存储数据库出现错误

在用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()把你的实体类传进去就存好啦

解决了吗

解决了吗