Java Eclipse将数据插入SQLite数据库,没有这样的表

Java Eclipse将数据插入SQLite数据库,没有这样的表,java,android,mysql,eclipse,sqlite,Java,Android,Mysql,Eclipse,Sqlite,我试图将数据插入数据库,但它告诉我没有这样的表。我在应用程序中还有另一个sqlite数据库,我不确定这是否会影响这个数据库,但我不这么认为。它使用相同的数据库名,但表名不同。如果你认为这会影响它,告诉我,我也会发布代码。 logcat给了我以下信息: (1) no such table: notes Error inserting title=Bleh desc=bleh android.database.sqlite.SQLiteException: no such table: notes

我试图将数据插入数据库,但它告诉我没有这样的表。我在应用程序中还有另一个sqlite数据库,我不确定这是否会影响这个数据库,但我不这么认为。它使用相同的数据库名,但表名不同。如果你认为这会影响它,告诉我,我也会发布代码。 logcat给了我以下信息:

(1) no such table: notes
Error inserting title=Bleh desc=bleh
android.database.sqlite.SQLiteException: no such table: notes (code 1): , while         compiling: INSERT INTO notes(title,desc) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.example.stepsaway.NoteActivity.addEntry(NoteActivity.java:102)
at com.example.stepsaway.NoteActivity.onClick(NoteActivity.java:75)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
任何帮助都将不胜感激,谢谢


编辑:问题似乎是在同一数据库名称内创建第二个表。它不会让我创建第二个。第一次创建DB工作正常,但在尝试创建另一个表时,它会出现SQLite异常,没有这样的表。是否需要修改或添加一些代码来创建第二个表?因为我所做的只是创建另一个sqlite数据库java,它具有相同的数据库名称,但具有不同的数据库表名称。

我的最佳猜测是,当您创建
nodeDB
对象时,活动仍然不可用。因此,您将无法创建表

您可以尝试将初始化noteDB的方式移动到内部
onCreate()


我的最佳猜测是,当您创建
nodeDB
对象时,活动仍然不可用。因此,您将无法创建表

您可以尝试将初始化noteDB的方式移动到内部
onCreate()


我的最佳猜测是,当您创建
nodeDB
对象时,活动仍然不可用。因此,您将无法创建表

您可以尝试将初始化noteDB的方式移动到内部
onCreate()


我的最佳猜测是,当您创建
nodeDB
对象时,活动仍然不可用。因此,您将无法创建表

您可以尝试将初始化noteDB的方式移动到内部
onCreate()

您的
onUpgrade()
为空,数据库架构版本为2。我的猜测是,数据库的初始版本没有
notes
表,当它后来被添加时,空的升级代码无法添加它。但是
SQLiteOpenHelper
很满意,因为它现在正在运行数据库的版本2

若要一次性修复,请清理应用程序数据。例如,在设置应用程序中,转到管理应用程序->下载->选择您的应用程序并单击“清除应用程序数据”按钮。或者只是卸载并重新安装应用程序。在开发过程中,这种方法已经足够好了

要为发布的版本修复它,请实现
onUpgrade()
,以便更新数据库架构并执行任何必要的数据迁移。如果您不担心数据丢失,只需在旧表上调用
DROP TABLE
,然后调用
onCreate()
重新创建表即可


关于多个表的后续问题:只需使用同一个helper类来管理数据库。每个数据库文件一个助手。在
onCreate()
中创建所有表,并在
onUpgrade()
中执行任何所需的迁移。您的
onUpgrade()
为空,数据库架构版本为2。我的猜测是,数据库的初始版本没有
notes
表,当它后来被添加时,空的升级代码无法添加它。但是
SQLiteOpenHelper
很满意,因为它现在正在运行数据库的版本2

若要一次性修复,请清理应用程序数据。例如,在设置应用程序中,转到管理应用程序->下载->选择您的应用程序并单击“清除应用程序数据”按钮。或者只是卸载并重新安装应用程序。在开发过程中,这种方法已经足够好了

要为发布的版本修复它,请实现
onUpgrade()
,以便更新数据库架构并执行任何必要的数据迁移。如果您不担心数据丢失,只需在旧表上调用
DROP TABLE
,然后调用
onCreate()
重新创建表即可


关于多个表的后续问题:只需使用同一个helper类来管理数据库。每个数据库文件一个助手。在
onCreate()
中创建所有表,并在
onUpgrade()
中执行任何所需的迁移。您的
onUpgrade()
为空,数据库架构版本为2。我的猜测是,数据库的初始版本没有
notes
表,当它后来被添加时,空的升级代码无法添加它。但是
SQLiteOpenHelper
很满意,因为它现在正在运行数据库的版本2

若要一次性修复,请清理应用程序数据。例如,在设置应用程序中,转到管理应用程序->下载->选择您的应用程序并单击“清除应用程序数据”按钮。或者只是卸载并重新安装应用程序。在开发过程中,这种方法已经足够好了

要为发布的版本修复它,请实现
onUpgrade()
,以便更新数据库架构并执行任何必要的数据迁移。如果您不担心数据丢失,只需在旧表上调用
DROP TABLE
,然后调用
onCreate()
重新创建表即可


关于多个表的后续问题:只需使用同一个helper类来管理数据库。每个数据库文件一个助手。在
onCreate()
中创建所有表,并在
onUpgrade()
中执行任何所需的迁移。您的
onUpgrade()
为空,数据库架构版本为2。我的猜测是,数据库的初始版本没有
notes
表,当它后来被添加时,空的升级代码无法添加它。但是
SQLiteOpenHelper
很满意,因为它现在正在运行数据库的版本2

若要一次性修复,请清理应用程序数据。例如,在设置应用程序中,转到管理应用程序->下载->选择您的应用程序并单击“清除应用程序数据”按钮。或者只是卸载并重新安装应用程序。这种方法已经足够好了
public class NoteActivity extends Activity implements OnClickListener {

Button buttonLeaveNote; 

private EditText mTitle;
private EditText mDesc;

protected NoteDBHelper noteDB = new NoteDBHelper(NoteActivity.this);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_note);

    buttonLeaveNote = (Button) findViewById(R.id.buttonLeaveNote);
    buttonLeaveNote.setOnClickListener(this);

    mTitle = (EditText)findViewById(R.id.etitle);
    mDesc = (EditText)findViewById(R.id.edesc);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.note, menu);
    return true;
}

@Override
public void onClick(View v) {
    switch(v.getId()){

    case R.id.buttonLeaveNote:

           String title = mTitle.getText().toString();
           String desc = mDesc.getText().toString();


           boolean invalid = false;

           if(title.equals(""))
           {
            invalid = true;
            Toast.makeText(getApplicationContext(), "Please enter a title", Toast.LENGTH_SHORT).show();
           }
           else
               if(desc.equals(""))
               {
                  invalid = true;
                  Toast.makeText(getApplicationContext(), "Please enter description", Toast.LENGTH_SHORT).show();

               } 

               else

                   if(invalid == false)
                   {
                       addEntry(title, desc);
                       Intent i_note = new Intent(NoteActivity.this, JustWanderingActivity.class);
                       startActivity(i_note);
                       //finish();
                      }

                      break;
                      }
                    }

public void onDestroy()
{
    super.onDestroy();
    noteDB.close();
}

private void addEntry(String title, String desc) 
 {
    SQLiteDatabase notedb = noteDB.getWritableDatabase();
    ContentValues values = new ContentValues();
      values.put("title", title);
      values.put("desc", desc);
      //values.put("lati", lati);
      //values.put("lng", lng);
      try
      {
       long newRowId;
       newRowId = notedb.insert(NoteDBHelper.DATABASE_TABLE_NAME, null, values);

       Toast.makeText(getApplicationContext(), "Note successfully added", Toast.LENGTH_SHORT).show();
      }

      catch(Exception e)
      {
       e.printStackTrace();
      } 
}

public void onNothingSelected(AdapterView<?> arg0) {
  // TODO Auto-generated method stub

 }
}
public class NoteDBHelper extends SQLiteOpenHelper 

{
 private SQLiteDatabase notedb;

public static final String NOTE_ID = "_nid";
public static final String NOTE_TITLE = "title";
public static final String NOTE_DESC = "desc";
public static final String NOTE_LAT = "lati";
public static final String NOTE_LONG = "lng";


NoteDBHelper noteDB = null;
private static final String DATABASE_NAME = "stepsaway.db";
private static final int DATABASE_VERSION = 2;
public static final String DATABASE_TABLE_NAME = "notes";


private static final String DATABASE_TABLE_CREATE =
        "CREATE TABLE " + DATABASE_TABLE_NAME + "(" +
        "_nid INTEGER PRIMARY KEY AUTOINCREMENT," +
        "title TEXT NOT NULL, desc LONGTEXT NOT NULL);";

public NoteDBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);
System.out.println("In constructor");
}


@Override
public void onCreate(SQLiteDatabase notedb) {

try{

notedb.execSQL(DATABASE_TABLE_CREATE);


}catch(Exception e){
e.printStackTrace();
}
}



@Override
public void onUpgrade(SQLiteDatabase notedb, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}




public Cursor rawQuery(String string, String[] strings) {
// TODO Auto-generated method stub
return null;
}




public void open() {

getWritableDatabase(); 
}


public Cursor getDetails(String text) throws SQLException 
{

Cursor mCursor =
        notedb.query(true, DATABASE_TABLE_NAME, 
          new String[]{NOTE_ID, NOTE_TITLE, NOTE_DESC}, 
          NOTE_TITLE + "=" + text, 
          null, null, null, null, null);
if (mCursor != null) 
{
    mCursor.moveToFirst();
}
return mCursor;


}
}
protected NoteDBHelper noteDB;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_note);

    noteDB = new NoteDBHelper(NoteActivity.this);


    buttonLeaveNote = (Button) findViewById(R.id.buttonLeaveNote);
    buttonLeaveNote.setOnClickListener(this);

    mTitle = (EditText)findViewById(R.id.etitle);
    mDesc = (EditText)findViewById(R.id.edesc);
}
 notedb.execSQL(DATABASE_TABLE_CREATE);

 notedb.execSQL(DATABASE_TABLE_CREATE_STRING_2);