2015-07-19 90 views
-1

嗨任何人都可以请帮助解决这个问题..android.database.sqlite.SQLiteException:没有这样的表:和插入错误

这是我DatabaseHelper.java代码

private static final String TABLE_SEATS = "Seat"; 
private static final String KEY_IDseats = "id"; 
private static final String KEY_CREATED_ATTs = "created_at"; 
private static final String KEY_Seatstrainno = "TrainNo"; 
private static final String KEY_Seatstype = "TrainType"; 
private static final String KEY_SeatsCls = "AvailC"; 
private static final String KEY_SEATSFARE="Fare" ; 
private static final String KEY_TOTALSEATS="Total_Seats"; 


private static final String CREATE_TABLE_seats = "CREATE TABLE " + TABLE_SEATS 
     + " (" + KEY_IDseats + " integer primary key autoincrement, " 
     + KEY_Seatstrainno + " string not null," 
     + KEY_Seatstype + " string not null," 
     + KEY_SeatsCls + " string not null," 
     + KEY_SEATSFARE + " string not null," 
     + KEY_TOTALSEATS + " string not null" 
     + ");"; 

@Override 
    public void onCreate(SQLiteDatabase _db) { 

     _db.execSQL(CREATE_TABLE_seats); 
     Log.d("Train seats table ", "created"); 


    } 


public void insertTrainseats(DatabaseHelper dob, String trainno, String trainttype, String traincls,String fare,String seats) { 

SQLiteDatabase SQ = dob.getWritableDatabase(); 
ContentValues initialVa = new ContentValues(); 
initialVa.put(KEY_Seatstrainno, trainno); 
initialVa.put(KEY_Seatstype, trainttype); 
initialVa.put(KEY_SeatsCls,traincls); 
initialVa.put(KEY_SEATSFARE, fare); 
initialVa.put(KEY_TOTALSEATS, seats); 

long k=SQ.insert(TABLE_SEATS, null, initialVa); 
} 

和我的logcat示出了该误差

8月7日至一十九日:28:06.444 2522年至2522年/ com.example.myapplication E/SQLiteLog:(1)没有这样的表:椅座

+1

卸载你的应用程序,以摆脱任何旧的数据库文件。 http://stackoverflow.com/questions/21881992/when-is-sqliteopenhelper-oncreate-onupgrade-run – laalto

+0

告诉我们你怎么**实例**你的DatabaseHelper。 –

回答

0

它看起来像座位表没有被创建。您需要确保在尝试添加数据之前调用onCreate()。

你可能需要一个onUpgrade()方法来确保的onCreate正确调用,如果你已经更改了数据库:

public class DatabaseHelper extends SQLiteOpenHelper { 
    private static final String DATABASE_NAME = "YOUR_DATABASE_NAME; 
    // Increment this when you make changes 
    private static final int DATABASE_VERSION = 2; 

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

    // This will delete your old database, but that's probably ok since it's not yet working. 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     database.execSQL("DROP TABLE IF EXISTS " + TABLE_SEATS); 
     onCreate(database); 
    } 


    // plus the code you have above 
    ... 
} 
+0

我在oncreate的开头添加了一个log.d()语句,并检查了它正在调用的天气,但它不显示在logcat中,意味着oncreate不会被调用no?我现在可以做什么... [我是Android新手] –

+0

您可能需要添加onUpgrade方法。我已经在上面添加了更多的细节。 –

相关问题