Это мой класс SimpleDBAdapter, который инкапсулирует все сложности доступа к базе данных, а внутренний класс SimpleDBHelper заботится о операциях CRUD. Теперь проблема, с которой я сталкиваюсь, заключается в том, что при развертывании кода таблицы создаются, но
я не могу вставить значения tht в таблицу, идентификатор возвращает -1, что показывает, что при вставке значений произошла ошибка.
id = db.insert(TABLE_SIMPLETABLE_CLIENT1,null,contentvalues);
SimpleDBAdapter.java
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.ViewGroup.MarginLayoutParams;</p>
<p>public class SimpleDBAdapter {
// Define all the constants that are to used in the Program
private static final String DATABASE_NAME = "SimpleDB.db";
private static final String TABLE_SIMPLETABLE_CLIENT1 = "SimpleTable1";
private static final int DATABASE_VERSION = 1;</p>
<pre><code>private static final String KEY_EMPLOYEE_ID = "Employee_id";
private static final String KEY_EMPLOYEE_NAME = "Name";
private static final String KEY_EMPLOYEE_DESIGNATION = "Designation";
private static final String KEY_EMPLOYEE_MARITUALSTATUS = "Maritual Status";
private static final String KEY_EMPLOYEE_DOJ = "Date of Joining";
private static final String TAG = "SimpleDBAdapter";
String CREATE_TABLE_SIMPLETABLE = "CREATE TABLE IF NOT EXISTS "
+ TABLE_SIMPLETABLE_CLIENT1
+ " (Employee_ID INTEGER PRIMARY KEY AUTOINCREMENT, "
+ " Employee_Name VARCHAR(20)," + " JoinedDateTime DATETIME,"
+ " Designation VARCHAR(20),"
+ " Maritual_Status BOOLEAN DEFAULT 'FALSE');";
private final Context ctx;
private SQLiteDatabase db;
private SimpleDBHelper simpledbhelper;
public SimpleDBAdapter(Context context) {
Log.i(TAG,"SimpleDBAdapter Constructor");
ctx = context;
simpledbhelper = new SimpleDBHelper(ctx);
}
class SimpleDBHelper extends SQLiteOpenHelper {
private static final String TAG = "SimpleDBHelper";
public SimpleDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
Log.i(TAG,"Calling.. super(context, DATABASE_NAME, null, DATABASE_VERSION)");
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i(TAG,"Creating Table named CREATE_TABLE_SIMPLETABLE");
db.execSQL(CREATE_TABLE_SIMPLETABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) {
Log.w(TAG, "Upgarding from" + oldversion + "to" + newversion
+ "could remove all the old data");
db.execSQL("DROP TABLE IF EXISTS TABLE_SIMPLETABLE_CLIENT1");
onCreate(db);
}
}
//Opens the DB
public void open() throws SQLException {
Log.i(TAG,"Open() Called...");
db = simpledbhelper.getWritableDatabase();
simpledbhelper.onCreate(db);
}
//closes the DB
public void close() {
Log.i(TAG,"Close() Called...");
simpledbhelper.close();
}
//inserting the values in to Table
public long insertEntry(String Name,String Designation,Boolean MaritualStatus,String date){
Log.i(TAG,"Insert Entry ()");
long id = 0;
try{
ContentValues contentvalues = new ContentValues();
contentvalues.put(KEY_EMPLOYEE_NAME, Name);
contentvalues.put(KEY_EMPLOYEE_DOJ,date);
contentvalues.put(KEY_EMPLOYEE_DESIGNATION, Designation);
contentvalues.put(KEY_EMPLOYEE_MARITUALSTATUS, MaritualStatus);
id = db.insert(TABLE_SIMPLETABLE_CLIENT1,null,contentvalues);
}
catch(Exception err){
Log.i(TAG,"Error Encountered...");
Log.e(TAG,String.valueOf(err).toString());
}
return id;
}
</code>
}
В файле MainClass (DBHandler.java) я создаю экземпляр кода и вызываю метод вставки этого класса следующим образом:
DBHandler.java
импорт android.app.Activity;
импорт android.os.Bundle;
импорт android.util.Log;
открытый класс SimpleDBApplication расширяет Activity {
приватная статическая конечная строка TAG = "SimpleDBApplication";
/ ** Вызывается при первом создании действия. * /
@Override
public void onCreate (BundlevedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
SimpleDBAdapter DBAdapter = новый SimpleDBAdapter (это);
Log.i (TAG, «Называется SimpleDBAdapter»);
// вызов для открытия БД
DBAdapter.open ();
длинный идентификатор;
// добавить запись
id = DBAdapter.insertEntry ("Vinayaka", "CEO", false, "17-7-2010");
Log.w (TAG, "Tuple Inserted");
Log.w (TAG, «Значение идентификатора:» + String.valueOf (id) .toString ());
// вызов для закрытия БД
DBAdapter.close ();
}
}
Заранее спасибо ...