이제는 이상한 문제가 있습니다. 모든 종류의 테스트를 완료했으며 이상한 것을보고 있습니다.SQLITE3 테이블에 열이 생성되지 않았습니다.
나는 SQLiteOpenHelper에 세 개의 테이블을 만들 : 세 개의 테이블에 따라 대한
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(TABLE_CHANNELS_CREATE);
db.execSQL(TABLE_FEEDS_CREATE);
db.execSQL(TABLE_FEEDMAP_CREATE);
}
catch (SQLiteException e){
Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
(가) 문을 CREATE :
CREATE TABLE IF NOT EXISTS IRChannels (
ChannelId INTEGER PRIMARY KEY,
ChannelHash TEXT NOT NULL,
ChannelTitle TEXT NOT NULL,
ChannelDesc TEXT, ChannelLink TEXT);
CREATE TABLE IF NOT EXISTS IRFeeds (
FeedId INTEGER PRIMARY KEY,
FeedHash TEXT NOT NULL,
FeedTitle TEXT NOT NULL,
FeedDescription TEXT,
FeedLink TEXT);
CREATE TABLE IF NOT EXISTS IRFeedMap (
ChannelHash_FK TEXT NOT NULL,
FeedHash_FK TEXT NOT NULL,
FOREIGN KEY (ChannelHash_FK) REFERENCES IRChannels (ChannelHash),
FOREIGN KEY (FeedHash_FK) REFERENCES IRFeeds (FeedHash));
문제는 분명히 다른 사람들이 동안 IRFeeds
에서 FeedHash
가 생성되지 않는 열입니다. sqlite3 명령 프롬프트에서 출력 찾고 있어요;
sqlite> .schema
CREATE TABLE IRChannels (
ChannelId INTEGER PRIMARY KEY,
ChannelHash TEXT NOT NULL,
ChannelTitle TEXT NOT NULL,
ChannelDesc TEXT,
ChannelLink TEXT);
CREATE TABLE IRFeedMap (
ChannelHash_FK TEXT NOT NULL,
FeedHash_FK TEXT NOT NULL,
FOREIGN KEY (ChannelHash_FK) REFERENCES IRChannels (ChannelHash),
FOREIGN KEY (FeedHash_FK) REFERENCES IRFeeds (FeedHash));
CREATE TABLE IRFeeds (
FeedId INTEGER PRIMARY KEY,
FeedHash TEXT NOT NULL,
FeedTitle TEXT NOT NULL,
FeedDescription TEXT,
FeedLink TEXT);
이 IRFeeds
에 FeedHash
열을 나열 않습니다. 그러나 실행할 때
sqlite> select * from IRFeeds where FeedHash='';
SQL error: no such column: FeedHash
다른 모든 열은 이러한 오류를 나타내지 않습니다. 이 상태로 인해 내 코드가 예기치 않게 실패하게됩니다. 나는 무엇을 놓칠 수 있 었는가?
sqlite> select * from IRFeeds where FeedID=1;
sqlite> select * from IRFeeds where FeedTitle='';
sqlite> select * from IRFeeds where FeedDescription='';
sqlite> select * from IRFeeds where FeedLink='';
다른 열에 대해 select
문을 실행하면 위 오류는 발생하지 않습니다.
흥미롭게도 내 상황에 QUESTOID SQLLite Manager'을 다른 사람을 도움 (http://jaxenter.com/manage-sqlite-for-android-11339.html) 내 데이터베이스를 열려고하면 다음과 같은 오류가 발생합니다.'보기를 만들 수 없습니다 : [행 1:58] 문자 '' CREATE TABLE IRFeeds (FeedId INTEGER PRIMARY KEY, FeedHash TEXT NOT NULL, FeedTitle TEXT NOT NULL, FeedDescription TEXT, FeedLink TEXT) ' –
이 스레드를 찾았습니다. (http://code.google.com/p/android/issues/detail? id = 1732). 내가 보는 것이 관련되어 있지만 여전히 도움이되는지 확실하지 않습니다. –
한숨! 참으로 이상합니다. 내가 수동으로'irfeeds를 떨어 뜨리고''테이블 irfeeds (...)를 만든 다음 내 코드를 실행하면 모든 것이 예상대로 작동한다. 이것이 SQLiteOpenHelper.onCreate에서 여러 테이블을 생성한다는 사실과 관련이 있는지 궁금해 할 것입니다. –