2011-12-11 10 views
0

안드로이드를 사용하여 데이터베이스를 만들려고하는데 내 열 이름이 잘못되었다는 오류가 계속 발생하며 그 이유를 알 수 없습니다."해당 열 이름이 없습니다."오류가 발생했습니다.

코드가 약간 길어서 온라인에서 찾은 템플릿 예제를 사용했습니다. (예를 들어 자체 값을 가지고 예제를 시도해 보았지만 정상적으로 작동했습니다.) 그리고 그 비트 중 어느 것이 맞는지 잘 모르겠습니다. 오류가 발생했습니다.

편집 : 나는 사과, 나는 문제가 원래의 게시물이 관련 될 수있다 (발생하는 곳이 될 수있다 생각 테이블을 생성하는 다른 클래스를 게시해야한다, 그래서 나는 바닥

그것을 떠날거야
package com.database.coffee; 

import android.database.sqlite.SQLiteDatabase; 
import android.util.Log; 

public class CoffeeTable { 
    // Database creation SQL statement 
    private static final String DATABASE_CREATE = "create table coffee " 
      + "(_id integer primary key autoincrement, " 
      + "name text not null, " + "address text not null, " 
      + "postcode text not null, " + "phone text not null, " 
      + "distance text not null, " + "website text not null);"; 

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

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

내 코드는 다음과 같습니다 사전에 어떤 도움

package com.database.coffee; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 

public class CoffeeDBAdapter { 

// Database fields 
public static final String KEY_ROWID = "_id"; 
public static final String KEY_NAME = "name"; 
public static final String KEY_ADDRESS = "address"; 
public static final String KEY_POSTCODE = "postcode"; 
public static final String KEY_PHONE = "phone"; 
public static final String KEY_DISTANCE = "distance"; 
public static final String KEY_WEBSITE = "website"; 
private static final String DB_TABLE = "coffee"; 
private Context context; 
private SQLiteDatabase db; 
private CoffeeDatabaseHelper dbHelper; 

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

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

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



public long createCoffee(String name, String address, String postcode, String phone, 
         String distance, String website) { 
    ContentValues values = createContentValues(name, address, postcode, phone, distance, website); 

    return db.insert(DB_TABLE, null, values); 
} 



public boolean updateCoffee(long rowId, String name, String address, String postcode, 
          String phone, String distance, String website) { 
    ContentValues values = createContentValues(name, address, postcode, phone, distance, website); 

    return db.update(DB_TABLE, values, KEY_ROWID + "=" + rowId, null) > 0; 
} 


public boolean deleteCoffee(long rowId) { 
    return db.delete(DB_TABLE, KEY_ROWID + "=" + rowId, null) > 0; 
} 



public Cursor fetchAllCoffee() { 
    return db.query(DB_TABLE, new String[] { KEY_ROWID, KEY_NAME, KEY_ADDRESS, KEY_POSTCODE, KEY_PHONE, KEY_DISTANCE, KEY_WEBSITE }, null, null, null, null, null); 
} 



public Cursor fetchCoffee(long rowId) throws SQLException { 
    Cursor mCursor = db.query(true, DB_TABLE, new String[] { KEY_ROWID,KEY_NAME, KEY_ADDRESS, 
                  KEY_POSTCODE, KEY_PHONE, KEY_DISTANCE, 
                  KEY_WEBSITE}, KEY_ROWID + "=" + rowId, null, null, null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

private ContentValues createContentValues(String name, String address, String postcode, String phone, String distance, String website) { 
    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, name); 
    values.put(KEY_ADDRESS, address); 
    values.put(KEY_POSTCODE, postcode); 
    values.put(KEY_PHONE, phone); 
    values.put(KEY_DISTANCE, distance); 
    values.put(KEY_WEBSITE, website); 
    return values; 
} 

감사

편집 2 :.

,451,515,

오류에 대한 로그 캣 로그는 다음과 같습니다

12-11 21:50:42.356: ERROR/AndroidRuntime(365): FATAL EXCEPTION: main 
12-11 21:50:42.356: ERROR/AndroidRuntime(365): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.menus.app/com.menus.app.FindFood}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.menus.app/com.menus.app.CoffeeTab}: android.database.sqlite.SQLiteException: no such column: name: , while compiling: SELECT _id, name, address, postcode, phone, distance, website FROM coffee 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.os.Looper.loop(Looper.java:123) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at dalvik.system.NativeStart.main(Native Method) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.menus.app/com.menus.app.CoffeeTab}: android.database.sqlite.SQLiteException: no such column: name: , while compiling: SELECT _id, name, address, postcode, phone, distance, website FROM coffee 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.widget.TabHost.setCurrentTab(TabHost.java:326) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.widget.TabHost.addTab(TabHost.java:216) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.menus.app.FindFood.onCreate(FindFood.java:38) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  ... 11 more 
12-11 21:50:42.356: ERROR/AndroidRuntime(365): Caused by: android.database.sqlite.SQLiteException: no such column: name: , while compiling: SELECT _id, name, address, postcode, phone, distance, website FROM coffee 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.database.coffee.CoffeeDBAdapter.fetchAllCoffee(CoffeeDBAdapter.java:80) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.menus.app.CoffeeTab.fillData(CoffeeTab.java:110) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at com.menus.app.CoffeeTab.onCreate(CoffeeTab.java:35) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    12-11 21:50:42.356: ERROR/AndroidRuntime(365):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
12-11 21:50:42.356: ERROR/AndroidRuntime(365):  ... 20 more 
12-11 21:50:42.415: WARN/ActivityManager(69): Force finishing activity com.menus.app/.FindFood 
+0

테이블을 만들려면 어떻게해야합니까? – Asahi

+0

예외가 정확히 무엇을 말합니까? – flesk

+0

전체 스택 추적을 게시 할 수 있습니까? "열이 없다"라는 오류가 발생하면 문제를 정확히 찾아 낼 수 없습니다. –

답변

1

당신이 실제로 테이블을 작성하기 전에 데이터를 쿼리하려는 것으로 보인다. 테이블을 만들 SQLiteOpenHelper를 사용해보십시오 - 당신은에서 onCreate를 (우선) 거기 DATABASE_CREATE을 실행해야

아주 좋은 튜토리얼 : http://www.vogella.de/articles/AndroidSQLite/article.html

+0

흠, 그게 실제로 내가 따라하려고하는 튜토리얼입니다. – djcmm476

+0

:) 도우미가 SQLiteOpenHelper를 확장하는지 확인하십시오. – Asahi

+0

예, 그렇습니다. 벌써 가지고있다. :( – djcmm476

관련 문제