3

我正在 android 中制作一个日记应用程序,它应该从文本字段中获取一些数据。

当我在模拟器上运行我的应用程序时,它会成功安装,但是只要我在字段中输入并点击菜单中的保存选项,模拟器就会提示日记应用程序已停止工作。

我无法在模拟器的文件资源管理器中的应用程序中找到数据库文件夹,这意味着我的数据库没有创建。

这是我在保存项目中编写的表代码中的 SQLite 连接建立和插入。

    if(item.getItemId()==R.id.save){

    EditText et=(EditText)findViewById(R.id.mood);
        String mood=et.getText().toString();
        et= (EditText)findViewById(R.id.weather);
        String weather=et.getText().toString();
        et= (EditText)findViewById(R.id.Text);
        String text=et.getText().toString();
        Date date= new Date();
        SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = sdfDate.format(date);

        SQLiteDatabase db= openOrCreateDatabase("DiaryDatabase",MODE_PRIVATE,null);
        db.execSQL("CREATE TABLE IF NOT EXIST DIARY ('Mood VARCHAR' , 'Weather VARCHAR' , 'Text VARCHAR' , 'Time VARCHAR' , 'Id INTEGER PRIMARY KEY');");
        db.execSQL("INSERT INTO DIARY VALUES(mood,weather,text,strDate,NULL);");
        db.close();
    }
4

2 回答 2

2

我认为你的 eqDDLDMLstatement 都不正确。尝试用以下内容替换您的:

String createQuery = "CREATE TABLE IF NOT EXIST DIARY ("
+ "id integer primary key, "
+ "mood text, "
+ "weather text, "
+ "content text, "
+ "time text" + ")";

这里:

INSERT INTO DIARY VALUES(mood,weather,text,strDate,NULL);

您的原始创建语句将PK列创建为最后一列,并且在您的插入语句中您尝试插入NULL,因为PK这是不允许的,并且它没有意义,因为PK它是每行的唯一标识符。

于 2013-05-04T21:07:41.447 回答
0

您应该创建一个从 SQLiteOpenHelper 扩展的 SQLite 帮助器类,以执行所有与数据库相关的项目,例如创建数据库和创建所需的表。

查看此示例并将其用作指南:

http://www.vogella.com/articles/AndroidSQLite/article.html

于 2013-05-04T20:39:26.317 回答