2012-02-28 62 views
0

我试图插入数据到一个大型项目的一部分表中。我收到上面的错误,无法弄清楚如何创建表。创建表的代码在下面,表名称是检查。所以我很困惑。数据库(3300):sqlite返回:错误代码= 1,msg =没有这样的表:但表名是检查?

这里是logcat的信息

02-27 18:38:45.956: I/Database(3559): sqlite returned: error code = 1, msg = no such table:  inspections 
02-27 18:38:45.967: E/Database(3559): Error inserting co_driver= driver=ewrre vehicle_id=ET 432 status=1 date_time=40 vehicle_type=truck 
02-27 18:38:45.967: E/Database(3559): android.database.sqlite.SQLiteException: no such table: inspections: , while compiling: INSERT INTO inspections(co_driver, driver, vehicle_id, status, date_time, vehicle_type) VALUES(?, ?, ?, ?, ?, ?); 
02-27 18:38:45.967: E/Database(3559): at android.view.View.performClick(View.java:2408) 

下面是创建该表

private static final String DATABASE_CREATE = "create table inspections (" 
    + "_id integer primary key autoincrement, " 
    + "vehicle_id string not null, " 
    + "vehicle_type string not null, " 
    + "datetime  integer not null, " 
    + "driver  string not null, " 
    + "codriver  string , " 
    + "status  integer not null " 
    + ");"; 

public static void onCreate(SQLiteDatabase database) { 
    database.execSQL(DATABASE_CREATE); 
} 

public static void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { 
    Log.w(InspectionsTable.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); 
    database.execSQL("DROP TABLE IF EXISTS inspections"); 
    onCreate(database); 
} 

这是DBhelper类

public class SignalSetDBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "db"; 
private static final int DATABASE_VERSION = 1; 

public SignalSetDBHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

// Method is called during creation of the database 
@Override 
public void onCreate(SQLiteDatabase db) { 
    CurrentStateTable.onCreate(db); 
    HoursOfServiceTable.onCreate(db); 
    InspectionsTable.onCreate(db); 
    } 

// Method is called during an upgrade of the database, 
// e.g. if you increase the database version 
@Override 
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { 
    CurrentStateTable.onUpgrade(database, oldVersion, newVersion); 
    HoursOfServiceTable.onUpgrade(database, oldVersion, newVersion); 
} 
} 

这是适配器类

代码
public class InspectionDBAdapter { 
private static final String KEY_ROWID ="_id"; 
private static final String KEY_VEHICLE_ID="vehicle_id"; 
private static final String KEY_VEHICLE_TYPE="vehicle_type";  
private static final String KEY_DATETIME="date_time"; 
private static final String KEY_DRIVER="driver"; 
private static final String KEY_CO_DRIVER="co_driver"; 
private static final String KEY_STATUS="status"; 
private static final String DB_TABLE="inspections"; 
private Context context; 
private SQLiteDatabase db; 
private SignalSetDBHelper dbHelper; 

public InspectionDBAdapter(Context context) { 
    this.context = context; 
} 

public InspectionDBAdapter open() throws SQLException { 
    dbHelper = new SignalSetDBHelper(context); 
    db = dbHelper.getWritableDatabase(); 
    return this; 
} 

public void close() { 
    dbHelper.close(); 
} 

public void insertInspection(String vehicle_id, String vehicle_type, 
     int datetime, String driver, String codriver, int status) 
{ 

    ContentValues newContact= createContentValue(vehicle_id, vehicle_type, 
     datetime, driver, codriver, status); 

    db.insert(DB_TABLE, KEY_STATUS, newContact); 

} 

private static ContentValues createContentValue(String vehicle_id, String vehicle_type, 
     int datetime, String driver, String codriver, int status) 
{ 
    ContentValues newContact= new ContentValues(); 
    newContact.put(KEY_VEHICLE_ID , vehicle_id); 
    newContact.put(KEY_VEHICLE_TYPE , vehicle_type); 
    newContact.put(KEY_DATETIME , datetime); 
    newContact.put(KEY_DRIVER , driver); 
    newContact.put(KEY_CO_DRIVER , codriver); 
    newContact.put(KEY_STATUS , status); 

    return newContact; 
+0

您可以在创建表格检查时分享代码吗? – 2012-02-28 03:21:44

+0

我刚刚添加了创建表的代码。表名是检查,所以这就是为什么我感到困惑。类名是InspectionTable。我试过了,它不起作用 – Aaron 2012-02-28 03:27:24

+0

你可以发布你创建table的类的完整代码吗?我想,你已经扩展了SQLiteOpenHelper类。 – Hiral 2012-02-28 04:42:08

回答

2

尝试使你的SignalSetDBHelper类,如:

public class SignalSetDBHelper extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "db"; 
    private static final int DATABASE_VERSION = 1; 
    private static final String INSPECTION_CREATE = "create table inspections (" 
    + "_id integer primary key autoincrement, " 
    + "vehicle_id string not null, " 
    + "vehicle_type string not null, " 
    + "datetime  integer not null, " 
    + "driver  string not null, " 
    + "codriver  string , " 
    + "status  integer not null " 
    + ");"; 

    public SignalSetDBHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    }  
    @Override 
    public void onCreate(SQLiteDatabase db) { 

     database.execSQL(INSPECTION_CREATE); 
     //do same for other two tables 
    }    
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) { 

     database.execSQL("DROP TABLE IF EXISTS inspections"); 
     // do same for other two tables 
     onCreate(database);   
    } 
} 

而在你的SignalSetDBHelper类的代码,在onUpgrade方法,你不包括InspectionsTable.onUpgrade(数据库,oldVersion,NEWVERSION);并且在所有语句之后,您还应该添加onCreate(database);请尝试将其添加到您现有的代码中,并查看获得的成功结果!

+0

谢谢,我一直在这一整天都在努力。 – Aaron 2012-02-28 05:56:56

+0

@Aaron:很高兴帮助:) – Hiral 2012-02-28 06:11:47

相关问题