我面临一个非常奇怪的错误,同时试图插入到名为“my_card”的表中。异常“表....没有列名....”
这些都是一些常量我在一个单独的接口中定义:
//tables name
public static final String TABLE_MY_CARD= "my_card" ;
public static final String TABLE_MY_CONTACTS = "my_contacts" ;
// Columns
public static final String NAME = "name" ;
public static final String PHONE = "phone" ;
public static final String EMAIL = "email";
public static final String FACEBOOK = "facebook";
public static final String WEBSITE = "web";
public static final String MAJOR = "major";
public static final String ULINK = "ulink";
之后我有延伸SQLiteOpenHelper,用2个函数的类。最重要的是第一个创建由参数给出的表格。
public class MySQLite_methods extends SQLiteOpenHelper implements Tables {
private static final String DATABASE_NAME = "my_database.db" ;
private static final int DATABASE_VERSION = 1;
private String TABLE_NAME;
/** Create a helper object for the Events database */
public MySQLite_methods (Context ctx, String table_name)
{
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
this.TABLE_NAME = table_name;
}
@Override
public void onCreate(SQLiteDatabase db)
{
String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME +
" (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
NAME + " TEXT NOT NULL," +
PHONE + " TEXT NOT NULL,"+
EMAIL + " TEXT NOT NULL,"+
FACEBOOK + " TEXT,"+
WEBSITE + " TEXT,"+
MAJOR + " TEXT NOT NULL,"+
ULINK + " TEXT NOT NULL" + ");" ;
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
最后,在我的活动,迫切要求保存按钮,将创建类的实例和一些EditText上-S的值之后已经被插入到数据库:
MySQLite_methods mysql = new MySQLite_methods (context, TABLE_MY_CARD);
Log.d("geo", "before getWr....");
// getting the database..
SQLiteDatabase db = mysql.getWritableDatabase();
// creating an object of type ContentValues which represents the record i am gonna add into the DB
ContentValues values = new ContentValues();
values.put(NAME, name.getText().toString());
values.put(PHONE, phone.getText().toString());
values.put(EMAIL, email.getText().toString());
values.put(FACEBOOK, facebook.getText().toString());
values.put(WEBSITE, website.getText().toString());
values.put(MAJOR, major.getText().toString());
values.put(ULINK, ulink.getText().toString());
Log.d("geo", "before insert");
// inserting data
db.insertOrThrow(TABLE_MY_CARD, null, values);
在插入的那一刻它给这个异常:
“android.database.sqlite.SQLiteException:表my_card没有名为网站列......”
我检查一遍又一遍的错别字,但没有...所以我不知道现在该做什么......任何想法? 谢谢
你是对的!非常感谢.... ! – Madrugada