2012-02-11 19 views
0

私はアンドロイドでデータベースを作ろうとしていますが、この問題があります。(AVD)でデータベースファイルを消去し、クラス "phone"のデータベースの名前を変更します。SQLiteデータベース

02-11 13:00:27.491: E/Database(487): android.database.sqlite.SQLiteException: table Phones_Table has no column named nam: , while compiling: INSERT INTO Phones_Table(nam, tel) VALUES(?, ?);

これは私のコードです:

public class Phones { 
    public static final String ID_ROW = "_id"; 
public static final String ID_PERSON = "nam"; 
public static final String ID_PHONE = "tel"; 

private static final String N_DB = "Phones"; 
private static final String N_TABLE = "Phones_Table"; 
private static final int VERSION_DB = 1; 

private DBHelper nHelper; 
private final Context nContext; 
private SQLiteDatabase nDB; 



private static class DBHelper extends SQLiteOpenHelper{ 

    public DBHelper(Context context) { 
     super(context, N_DB, null, VERSION_DB); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + N_TABLE + "(" + 
     ID_ROW + " INTEGER PRIMARY KEY AUTOINCREMENT, "+ 
     ID_PERSON + "TEXT NOT NULL, "+ 
     ID_PHONE + "TEXT NOT NULL);" 
     ); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + N_TABLE); 
     onCreate(db);   
    } 

} 

public Phones (Context c){ 

    nContext = c; 
} 

public Phones open() throws SQLException{ 
    nHelper = new DBHelper(nContext); 
    nDB = nHelper.getWritableDatabase(); 
    return this; 
} 

public void close() { 
    // TODO Auto-generated method stub 
    nHelper.close(); 
} 

public long createEntry(String nam, String tel) { 
    // TODO Auto-generated method stub 
    //insert data 
    ContentValues cv = new ContentValues(); 
    //put content of name 
    cv.put(ID_PERSON, nam); 
    //put content of Phone 
    cv.put(ID_PHONE, tel); 

    //return content in table 
    return nDB.insert(N_TABLE, null, cv); 

} 

public String receive() { 
    // TODO Auto-generated method stub 
    String[] columns = new String[]{ID_ROW, ID_PERSON, ID_PHONE}; 
    Cursor c = nDB.query(N_TABLE, columns, null, null, null, null, null); 
    String result = ""; 

    int iRow = c.getColumnIndex(ID_ROW); 
    int iName = c.getColumnIndex(ID_PERSON); 
    int iPhone = c.getColumnIndex(ID_PHONE); 
    //loop 
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
     result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iPhone) + "\n "; 

    } 

    return result; 
}} 

は本当にあなたがcreate table文字列で指定された位置にスペースが不足しているあなたの助け

答えて

4
ID_PERSON + "TEXT NOT NULL, "+ 
      ^

をいただければ幸いです。次の行についても同じです。

テーブルには、余分なスペースを持たないnamTEXTtelTEXTという名前の列があります。

+0

非常にありがとう、マット、私はそれを修正し、私は見ていない方法を理解していない! – JLouis