2013-10-24 2 views
0

아무도 내가 문제를 찾도록 도와 줄 수 있습니까? 데이터베이스에 무언가를 추가 할 때까지 모든 것이 잘 실행됩니다. 이것은 오류 로그입니다.테이블 x에는 열 y 오류가 없습니다

10-24 03:55:21.625: E/SQLiteLog(924): (1) table contacts has no column named breed 
10-24 03:55:21.645: E/SQLiteDatabase(924): Error inserting breed=null weight=null notes=null dateoffertilization=null earring=null milkproduction=null age=null 
10-24 03:55:21.645: E/SQLiteDatabase(924): android.database.sqlite.SQLiteException: table contacts has no column named breed (code 1): , while compiling: INSERT INTO contacts(breed,weight,notes,dateoffertilization,earring,milkproduction,age) VALUES (?,?,?,?,?,?,?) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at farm.admin.DatabaseHandler.Add_Contact(DatabaseHandler.java:75) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at farm.admin.Add_Update_User$1.onClick(Add_Update_User.java:146) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.view.View.performClick(View.java:4240) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.view.View$PerformClick.run(View.java:17721) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.os.Handler.handleCallback(Handler.java:730) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.os.Looper.loop(Looper.java:137) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at android.app.ActivityThread.main(ActivityThread.java:5103) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at java.lang.reflect.Method.invokeNative(Native Method) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at java.lang.reflect.Method.invoke(Method.java:525) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-24 03:55:21.645: E/SQLiteDatabase(924): at dalvik.system.NativeStart.main(Native Method) 

그리고 이것은 코드입니다. 누군가가 나에게 문제를 지적하는 데 도움 수 있다면

package farm.admin; 

import java.util.ArrayList; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DatabaseHandler extends SQLiteOpenHelper { 

// All Static variables 
// Database Version 
private static final int DATABASE_VERSION = 1; 

// Database Name 
private static final String DATABASE_NAME = "contactsManager"; 

// Contacts table name 
private static final String TABLE_CONTACTS = "contacts"; 

// Contacts Table Columns names 
private static final String KEY_ID = "id"; 
private static final String KEY_EARRING = "earring"; 
private static final String KEY_AGE = "age"; 
private static final String KEY_WEIGHT = "weight"; 
private static final String KEY_MILKPRODUCTION = "milkproduction"; 
private static final String KEY_BREED = "breed"; 
private static final String KEY_DATEOFFERTILIZATION = "dateoffertilization"; 
private static final String KEY_NOTES = "notes"; 
private final ArrayList<Contact> contact_list = new ArrayList<Contact>(); 

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

// Creating Tables 
@Override 
public void onCreate(SQLiteDatabase db) { 
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_EARRING + " TEXT," + KEY_AGE + " TEXT," + KEY_WEIGHT + " TEXT" + KEY_MILKPRODUCTION + " TEXT," + KEY_BREED + " TEXT," + KEY_DATEOFFERTILIZATION + " TEXT" + KEY_NOTES + " TEXT," + ")"; 
db.execSQL(CREATE_CONTACTS_TABLE); 
} 

// Upgrading database 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
// Drop older table if existed 
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 

// Create tables again 
onCreate(db); 
} 

/** 
* All CRUD(Create, Read, Update, Delete) Operations 
*/ 

// Adding new contact 
public void Add_Contact(Contact contact) { 
SQLiteDatabase db = this.getWritableDatabase(); 
ContentValues values = new ContentValues(); 
values.put(KEY_EARRING, contact.getEarring()); // Contact earring 
values.put(KEY_AGE, contact.getAge()); // Contact age 
values.put(KEY_WEIGHT, contact.getWeight()); // Contact weight 
values.put(KEY_MILKPRODUCTION, contact.getMilkproduction()); // Contact milkprodcution 
values.put(KEY_BREED, contact.getBreed()); // Contact breed 
values.put(KEY_DATEOFFERTILIZATION, contact.getDateoffertilization()); // Contact date 
values.put(KEY_NOTES, contact.getNotes()); // Contact notes 
// Inserting Row 
db.insert(TABLE_CONTACTS, null, values); 
db.close(); // Closing database connection 
} 

// Getting single contact 
Contact Get_Contact(int id) { 
SQLiteDatabase db = this.getReadableDatabase(); 

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, 
    KEY_EARRING, KEY_AGE, KEY_WEIGHT,KEY_MILKPRODUCTION, KEY_BREED, KEY_DATEOFFERTILIZATION, KEY_NOTES }, KEY_ID + "=?", 
    new String[] { String.valueOf(id) }, null, null, null, null); 
if (cursor != null) 
    cursor.moveToFirst(); 

Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), 
    cursor.getString(1), cursor.getString(2), cursor.getString(3),cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7)); 
// return contact 
cursor.close(); 
db.close(); 

return contact; 
} 

// Getting All Contacts 
public ArrayList<Contact> Get_Contacts() { 
try { 
    contact_list.clear(); 

    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
    do { 
     Contact contact = new Contact(); 
     contact.setID(Integer.parseInt(cursor.getString(0))); 
     contact.setEarring(cursor.getString(1)); 
     contact.setAge(cursor.getString(2)); 
     contact.setWeight(cursor.getString(3)); 
     contact.setMilkproduction(cursor.getString(4)); 
     contact.setBreed(cursor.getString(5)); 
     contact.setDateoffertilization(cursor.getString(6)); 
     contact.setNotes(cursor.getString(7)); 
     // Adding contact to list 
     contact_list.add(contact); 
    } while (cursor.moveToNext()); 
    } 

    // return contact list 
    cursor.close(); 
    db.close(); 
    return contact_list; 
} catch (Exception e) { 
    // TODO: handle exception 
    Log.e("all_contact", "" + e); 
} 

return contact_list; 
} 

// Updating single contact 
public int Update_Contact(Contact contact) { 
SQLiteDatabase db = this.getWritableDatabase(); 

ContentValues values = new ContentValues(); 
values.put(KEY_EARRING, contact.getEarring()); 
values.put(KEY_AGE, contact.getAge()); 
values.put(KEY_WEIGHT, contact.getWeight()); 
values.put(KEY_MILKPRODUCTION, contact.getMilkproduction()); 
values.put(KEY_BREED, contact.getBreed()); 
values.put(KEY_DATEOFFERTILIZATION, contact.getDateoffertilization()); 
values.put(KEY_NOTES, contact.getNotes()); 

// updating row 
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", 
    new String[] { String.valueOf(contact.getID()) }); 
} 

// Deleting single contact 
public void Delete_Contact(int id) { 
SQLiteDatabase db = this.getWritableDatabase(); 
db.delete(TABLE_CONTACTS, KEY_ID + " = ?", 
    new String[] { String.valueOf(id) }); 
db.close(); 
} 

// Getting contacts Count 
public int Get_Total_Contacts() { 
String countQuery = "SELECT * FROM " + TABLE_CONTACTS; 
SQLiteDatabase db = this.getReadableDatabase(); 
Cursor cursor = db.rawQuery(countQuery, null); 
cursor.close(); 

// return count 
return cursor.getCount(); 
} 

}

, 겠네요 나는 테이블 creation.Maybe 뭔가에 뭔가 쉼표 나 공백 잘못을 엉망 확신 할 것이다.

EDIT1

내가 무언가를 추가하려고 후에 나는 마지막을 제거하고 app.Now를 다시 설치, 일부 누락 된 쉼표를 추가하는 시도 몇 가지 제안 후 앱이 추락하고 난 항상 메시지가 "불행하게도, 응용 프로그램이 중지 일하는 "또는 이와 비슷한 것입니다.하지만 새로운 치명적인 예외가 있습니다. 여기에 로그가 있습니다.

10-24 06:32:40.521: D/dalvikvm(837): GC_FOR_ALLOC freed 81K, 5% free 2938K/3068K, paused 28ms, total 30ms 
10-24 06:32:40.561: D/AndroidRuntime(837): Shutting down VM 
10-24 06:32:40.571: W/dalvikvm(837): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 
10-24 06:32:40.581: E/AndroidRuntime(837): FATAL EXCEPTION: main 
10-24 06:32:40.581: E/AndroidRuntime(837): java.lang.NullPointerException 
10-24 06:32:40.581: E/AndroidRuntime(837): at farm.admin.Main_Screen$Contact_Adapter.getView(Main_Screen.java:157) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.AbsListView.obtainView(AbsListView.java:2177) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.ListView.measureHeightOfChildren(ListView.java:1247) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.ListView.onMeasure(ListView.java:1159) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
10-24 06:32:40.581: E/AndroidRuntime(837): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
10-24 06:32:40.581: E/AndroidRuntime(837): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.View.measure(View.java:15848) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.Choreographer.doFrame(Choreographer.java:532) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.os.Handler.handleCallback(Handler.java:730) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.os.Looper.loop(Looper.java:137) 
10-24 06:32:40.581: E/AndroidRuntime(837): at android.app.ActivityThread.main(ActivityThread.java:5103) 
10-24 06:32:40.581: E/AndroidRuntime(837): at java.lang.reflect.Method.invokeNative(Native Method) 
10-24 06:32:40.581: E/AndroidRuntime(837): at java.lang.reflect.Method.invoke(Method.java:525) 
10-24 06:32:40.581: E/AndroidRuntime(837): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
10-24 06:32:40.581: E/AndroidRuntime(837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-24 06:32:40.581: E/AndroidRuntime(837): at dalvik.system.NativeStart.main(Native Method) 
+0

앱을 한 번 실행 한 후 표를 생성하는 코드를 변경 한 경우 데이터를 지우고 애플리케이션을 다시 실행하십시오. –

+0

응답 해 주셔서 감사합니다. 전 신규 일 뿐이므로 어떻게 할 수 있는지 알려주세요. – hhayf

+0

farm.admin.Main_Screen $ Contact_Adapter.getView()의 NPE는 별개의 문제입니다. 도움이 필요하면 어댑터의 관련 코드와 함께 다른 질문을 게시하십시오. – laalto

답변

1
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_EARRING + " TEXT," + KEY_AGE + " TEXT," + KEY_WEIGHT + " TEXT" + KEY_MILKPRODUCTION + " TEXT," + KEY_BREED + " TEXT," + KEY_DATEOFFERTILIZATION + " TEXT" + KEY_NOTES + " TEXT," + ")"; 

어떤 , 열 사양 사이에 행방 불명이 있습니다. 예 : weight 및? dateoffertilization. 또한 마지막 열 스펙 다음에 ,이 필요 없습니다.

여기에서 스키마를 변경 한 후 DATABASE_VERSION을 범람하거나 응용 프로그램의 데이터를 지워서 테이블 생성이 다시 실행되는지 확인하십시오.

+0

나는 쉼표를 고쳤지만 문제는 여전히 남아 있습니다. 나는 거의 모든 곳에서이 "오래된 응용 프로그램을 지우십시오"라고 읽었습니다. 어떻게 할 수 있습니까? – hhayf

+1

@hhayf 앱 관리자 -> 앱 -> 앱 정보로 이동하여 '데이터 지우기'를 선택하거나 제거하고 다시 설치하십시오. – laalto

+0

응답 해 주셔서 감사합니다. 귀하의 제안과 프로그램이 현재 진행되었지만 새로운 문제가 발생했습니다. 위의 주제를 업데이트했습니다. – hhayf

관련 문제