android.database.sqlite.SQLiteException:没有这样的表

时间:2015-05-26 12:49:36

标签: android mysql sqlite

我知道有很多关于此错误的主题,但我尝试了很多解决方案,但仍然遇到了这个错误。 这是我第一次玩SQLite,我不明白那里发生了什么错误。

05-26 08:34:20.369  23124-23124/com.danynuria.fmp D/ODOperations﹕ Overall Table Created
05-26 08:34:20.373  23124-23124/com.danynuria.fmp E/SQLiteLog﹕ (1) no such table: database_info
05-26 08:34:20.374  23124-23124/com.danynuria.fmp E/SQLiteDatabase﹕ Error inserting date=26 / 4 / 2015 county=Bedfordshire co2_saved=149 distance=1245 distance_type=run user_id=1
    android.database.sqlite.SQLiteException: no such table: database_info (code 1): , while compiling: INSERT INTO database_info(date,county,co2_saved,distance,distance_type,user_id) 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:1469)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
            at com.danynuria.fmp.OverallDatabaseOperations.putInformation(OverallDatabaseOperations.java:73)
            at com.danynuria.fmp.MainActivity$1.onClick(MainActivity.java:121)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
05-26 08:34:20.374  23124-23124/com.danynuria.fmp D/ODOperations﹕ One row inserted

我的代码:

package com.danynuria.fmp;

import android.app.DownloadManager;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import com.danynuria.fmp.OverallTableData.OverallTableinfo;

import java.sql.SQLException;


public class OverallDatabaseOperations extends SQLiteOpenHelper {

// Create integer that register version of database
private static final int overallDatabase_version = 1;


// Create query
public String CREATE_QUERY = "CREATE TABLE "+OverallTableinfo.OVERALL_TABLE_NAME+"( "+OverallTableinfo.USER_ID+" INTEGER, "+OverallTableinfo.DISTANCE+
        " INTEGER, "+OverallTableinfo.DISTANCE_TYPE+" TEXT, "+OverallTableinfo.COUNTY+" TEXT, "+OverallTableinfo.CO2_SAVED+
        " INTEGER, "+OverallTableinfo.DATE+" TEXT);";


// Creating the database using SQLiteOpenHelper constructor
public OverallDatabaseOperations(Context context) {

    super(context, OverallTableinfo.OVERALL_DATABASE_NAME, null, overallDatabase_version);
}


public void onCreate(SQLiteDatabase odb ){

  odb.execSQL(CREATE_QUERY);

    Log.d("ODOperations", "Overall Table Created");

}





public void onUpgrade(SQLiteDatabase arg0,int arg1, int arg2){



}


//  Create a method to insert data into database
public void putInformation(OverallDatabaseOperations dop, Integer id, Integer distance, String type, String county, Integer co2saved, String date) {

    // Create a SQLite database object
    SQLiteDatabase OSQ = dop.getWritableDatabase();

    // Create an object for content values
    ContentValues ncv = new ContentValues();

    // Passing the first column value
    ncv.put(OverallTableinfo.USER_ID, id);
    ncv.put(OverallTableinfo.DISTANCE, distance);
    ncv.put(OverallTableinfo.DISTANCE_TYPE, type);
    ncv.put(OverallTableinfo.COUNTY, county);
    ncv.put(OverallTableinfo.CO2_SAVED, co2saved);
    ncv.put(OverallTableinfo.DATE, date);

    // Inserting data into table
    OSQ.insert(OverallTableinfo.OVERALL_DATABASE_NAME, null, ncv);
    Log.d("ODOperations", "One row inserted");

}

}

另一堂课:

package com.danynuria.fmp;

import android.provider.BaseColumns;


public class OverallTableData {


// Create constructor
public OverallTableData() {




}


// Create abstract class
public static abstract class OverallTableinfo implements BaseColumns {

    // Create first column in database
    public static final String USER_ID = "user_id";

    // Create second column in database
    public static final String DISTANCE = "distance";

    // Create third column in database
    public static final String DISTANCE_TYPE = "distance_type";

    // Create forth column in database
    public static final String COUNTY = "county";

    // Create fifth column in database
    public static final String CO2_SAVED = "co2_saved";

    // Create sixth column in database
    public static final String DATE = "date";


    // Define database name
    public static final String OVERALL_DATABASE_NAME = "database_info";

    // Define table name
    public static final String OVERALL_TABLE_NAME = "overall_info";


}


}

非常感谢任何建议

1 个答案:

答案 0 :(得分:3)

您必须在插入中使用OVERALL_TABLE_NAME而不是OVERALL_DATABASE_NAME

 OSQ.insert(OverallTableinfo.OVERALL_TABLE_NAME, null, ncv);