SQLite连接:应用程序停止工作

时间:2013-05-04 20:34:02

标签: android sqlite dbconnection

我在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();
    }

2 个答案:

答案 0 :(得分:2)

我认为你们两个都是e.q. DDLDML语句不正确。尝试用以下内容替换你的:

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);

您的origin create语句创建PK列作为最后一列,在您的插入语句中,您试图将NULL作为PK插入,这是不允许的,并且它不会使用因为PK是每行的唯一标识符。

答案 1 :(得分:0)

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

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

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