簡體   English   中英

android.database.sqlite.SQLiteException:沒有這樣的表

[英]android.database.sqlite.SQLiteException: no such table

我知道關於此錯誤的話題很多,但是我嘗試了很多解決方案,但仍然被這個錯誤困擾。 這是我第一次玩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";


}


}

任何建議都受到高度贊賞

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM