createRecordsメソッドを呼び出すと、データ型が一致せず、行の挿入が(name、_id)でなく(_id、name)でないのはなぜですか?AndroidデータベースSQLiteデータ型の不一致
package com.caldroidsample;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import static android.R.attr.text;
import static android.R.id.primary;
import static com.caldroidsample.R.id.email;
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "DBName";
private static final int DATABASE_VERSION = 2;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table MyEmployees(_id integer primary key, name varchar(255) not null);";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
// Method is called during an upgrade of the database,
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion){
Log.w(MyDatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS MyEmployees");
onCreate(database);
}
}
これは、クラスMyDB.java
package com.caldroidsample;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MyDB{
private MyDatabaseHelper dbHelper;
public SQLiteDatabase database;
public final static String EMP_TABLE="MyEmployees"; // name of table
public final static String EMP_ID="_id"; // id value for employee
public final static String EMP_NAME="name"; // name of employee
public final static String EMP_EMAIL="email"; // email of employee
public final static String EMP_ADDRESS="address";
public final static String EMP_GENDER="gender";
/**
*
* @param context
*/
public MyDB(Context context){
dbHelper = new MyDatabaseHelper(context);
database = dbHelper.getWritableDatabase();
}
public long createRecords(String id, String name){
ContentValues values = new ContentValues();
values.put(EMP_NAME, name);
values.put(EMP_ID, id);
return database.insert(EMP_TABLE, EMP_ID, values);
}
public Cursor selectRecords() {
String[] cols = new String[] {EMP_ID, EMP_NAME};
Cursor mCursor = database.query(true, EMP_TABLE,cols,null
, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor; // iterate to get each value.
}
}
EDITです:私は(255)varchar型に_idの整数型を変更しますが、私はまだ同じエラーを取得しています。
'_idの整数型を変更しましたが、同じエラーが発生しています.' dbスキーマを変更するときは、アプリケーションをアンインストールして再インストールする必要があります。または、DATABASE_VERSIONを変更します。 –