im inserting some field to sqlite and inserting works fine while updating the same field the values are retrieving to edittext but not updating with upadte button please give me perfect solution and its showing error like no column. they is no problem with insert and delete but not update please provide me solution.
thank you in advance
public class DatabaseEvent extends SQLiteOpenHelper {
public DatabaseEvent(Context context,
String name,
SQLiteDatabase.CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public void queryData(String sql){
SQLiteDatabase database=getWritableDatabase();
database.execSQL(sql);
}
//insertData
public void inserteacher(String name,String eventname,String eventorganization,String eventdays,String eventstart, byte[] image){
SQLiteDatabase database=getWritableDatabase();
String sql="INSERT INTO PRINCIPALS VALUES (NULL,?, ?, ?, ?, ?, ?)";
SQLiteStatement statement=database.compileStatement(sql);
statement.clearBindings();
statement.bindString(1,name);
statement.bindString(2,eventname);
statement.bindString(3,eventorganization);
statement.bindString(4,eventdays);
statement.bindString(5,eventstart);
statement.bindBlob(6,image);
statement.executeInsert();
}
public Cursor getData(String sql){
SQLiteDatabase database=getReadableDatabase();
return database.rawQuery(sql,null);
}
//updatedata
public void updateData(String name,String eventname,String eventorganization,String eventdays,String eventstart, byte[] image, int id){
SQLiteDatabase database=getWritableDatabase();
//query to upadte
String sql = "UPDATE PRINCIPALS SET name=?, eventname=?, eventorganization=?, eventdays=?, eventstart=?, image=? WHERE id=? ";
SQLiteStatement statement=database.compileStatement(sql);
statement.bindString(1,name);
statement.bindString(2,eventname);
statement.bindString(3,eventorganization);
statement.bindString(4,eventdays);
statement.bindString(5,eventstart);
statement.bindBlob(6,image);
statement.bindDouble(7,(double)id);
statement.execute();
database.close();
}
//deletedata
public void deleteData(int id){
SQLiteDatabase database=getWritableDatabase();
//query to delete record using id
String sql= "DELETE FROM PRINCIPALS WHERE id=?";
SQLiteStatement statement=database.compileStatement(sql);
statement.clearBindings();
statement.bindDouble(1,(double) id);
statement.execute();
database.close();
}
@Override
public void onCreate(SQLiteDatabase database) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
//alert dialog to display options of update and delete
CharSequence[] items = {"Update", "Delete"};
AlertDialog.Builder dialog = new AlertDialog.Builder(PrincipalEventListActivity.this);
dialog.setTitle("Choose an action");
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (i == 0) {
//upadte
Cursor c = PrincipalEventActivity.databaseEvent.getData("SELECT id FROM PRINCIPALS ");
ArrayList<Integer> arrID = new ArrayList<>();
while (c.moveToNext()) {
arrID.add(c.getInt(0));
}
//show update diaglog
showDialogUpdate(PrincipalEventListActivity.this, arrID.get(position));
}
if (i == 1) {
//delete
Cursor c = PrincipalEventActivity.databaseEvent.getData("SELECT id FROM PRINCIPALS ");
ArrayList<Integer> arrID = new ArrayList<Integer>();
while (c.moveToNext()) {
arrID.add(c.getInt(0));
}
//show update diaglog
showDialogDelete(arrID.get(position));
}
}
});
dialog.show();
//return true;
}
});
}
private void showDialogDelete(final int idrecord) {
AlertDialog.Builder dialogDelete = new AlertDialog.Builder(PrincipalEventListActivity.this);
dialogDelete.setTitle("Warning..!!!");
dialogDelete.setMessage("Are You Sure..??");
dialogDelete.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
PrincipalEventActivity.databaseEvent.deleteData(idrecord);
Toast.makeText(PrincipalEventListActivity.this, "Deleted Successfully", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("error", e.getMessage());
}
updateRecordlist();
}
});
dialogDelete.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
dialogDelete.show();
}
private void showDialogUpdate(Activity activity, final int position) {
final Dialog dialog = new Dialog(activity);
dialog.setContentView(R.layout.upadte_principal_dialog);
dialog.setTitle("Update");
imageViewicon = dialog.findViewById(R.id.imageviewrecord);
final EditText edtselect = dialog.findViewById(R.id.editselect);
final EditText edtname = dialog.findViewById(R.id.editname);
final EditText edtorg = dialog.findViewById(R.id.editorg);
final EditText edtdays = dialog.findViewById(R.id.editdays);
final EditText editstart = dialog.findViewById(R.id.editstart);
Button btnupdate = dialog.findViewById(R.id.btnprincipalupdate);
//get all data from sqlite
Cursor cursor = PrincipalEventActivity.databaseEvent.getData("SELECT * FROM PRINCIPALS WHERE id=" + position);
mList.clear();
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
String select = cursor.getString(1);
edtselect.setText(select);
String name = cursor.getString(2);
edtname.setText(name);
String org = cursor.getString(3);
edtorg.setText(org);
String days = cursor.getString(4);
edtdays.setText(days);
String start = cursor.getString(5);
editstart.setText(start);
byte[] image = cursor.getBlob(6);
imageViewicon.setImageBitmap(BitmapFactory.decodeByteArray(image, 0, image.length));
//adding list
mList.add(new Teacher_Event(id, select, name, org, days, start, image));
}
//set width of dialog
final int width = (int) (activity.getResources().getDisplayMetrics().widthPixels * 0.95);
//set height of dialog
int height = (int) (activity.getResources().getDisplayMetrics().heightPixels * 0.7);
dialog.getWindow().setLayout(width, height);
dialog.show();
//in update dialog click image to update image
imageViewicon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//check external permission
ActivityCompat.requestPermissions(PrincipalEventListActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 888);
}
});
btnupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
PrincipalEventActivity.databaseEvent.updateData(
edtselect.getText().toString().trim(),
edtname.getText().toString().trim(),
edtorg.getText().toString().trim(),
edtdays.getText().toString().trim(),
editstart.getText().toString().trim(),
PrincipalEventActivity.imageViewToByte(imageViewicon), position);
dialog.dismiss();
Toast.makeText(getApplicationContext(), "Update Successfully", Toast.LENGTH_SHORT).show();
} catch (Exception error) {
Log.e("Update error", error.getMessage());
}
updateRecordlist();
}
});
}
private void updateRecordlist() {
//get all data from sqlite
Cursor cursor=PrincipalEventActivity.databaseEvent.getData("SELECT * FROM PRINCIPALS");
mList.clear();
while (cursor.moveToNext()){
int id = cursor.getInt(0);
String select=cursor.getString(1);
String name = cursor.getString(2);
String org =cursor.getString(3);
String days = cursor.getString(4);
String start=cursor.getString(5);
byte[] image=cursor.getBlob(6);
mList.add(new Teacher_Event(id, select, name, org, days, start, image));
}
Adapter.notifyDataSetChanged();
}
private static byte[] imageViewToByte(ImageView image) {
Bitmap bitmap=((BitmapDrawable)image.getDrawable()).getBitmap();
ByteArrayOutputStream stream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] bytearray=stream.toByteArray();
return bytearray;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode==888){
if(grantResults.length>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED){
//gallery intent
Intent galleryintent=new Intent(Intent.ACTION_GET_CONTENT);
galleryintent.setType("image/*");
startActivityForResult(galleryintent,888);
}else {
Toast.makeText(this, "Dont have persmission", Toast.LENGTH_SHORT).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode==888 && resultCode==RESULT_OK){
Uri imageuri =data.getData();
try {
Bitmap bitmap= MediaStore.Images.Media.getBitmap(getContentResolver(),imageuri);
imageViewicon.setImageBitmap(bitmap);
}catch (Exception e){
e.printStackTrace();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}
my logcat
E/SQLiteLog: (1)
E/Update error: no such column: name (Sqlite code 1 SQLITE_ERROR): , while compiling: UPDATE PRINCIPALS SET name=?, eventname=?, eventorganization=?, eventdays=?, eventstart=?, image=? WHERE id=?, (OS error - 11:Try again)
I/Choreographer: Skipped 42 frames! The application may be doing too much work on its main thread.
E/: [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
I/OpenGLRenderer: Davey! duration=764ms; Flags=0, IntendedVsync=284156144329502, Vsync=284156844329474, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=284156845468044, AnimationStart=284156845521169, PerformTraversalsStart=284156845522732, DrawStart=284156892294086, SyncQueued=284156894770648, SyncStart=284156894993044, IssueDrawCommandsStart=284156895272732, SwapBuffers=284156906992003, FrameCompleted=284156909328982, DequeueBufferDuration=340000, QueueBufferDuration=535000,
W/libEGL: EGLNativeWindowType 0x7a9516f010 disconnect failed
W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
W/InputMethodManager: startInputReason = 1
D/ZrHung.AppEyeUiProbe: stop checker.
D/ViewRootImpl[PrincipalEventListActivity]: surface should not be released
D/ZrHung.AppEyeUiProbe: Current Activity:false
not watching, wait.
W/libEGL: EGLNativeWindowType 0x7a951b3010 disconnect failed
During update your column
name is not match with table actual column
name. Try below:
String sql = "UPDATE PRINCIPAL SET selectname=?, eventname=?, eventorg=?, eventdays=?, eventstart=?, image=? WHERE id=? ";
There are two mismatch in column between create
and update
sql
name
should beselectname
eventorganization
should beeventorg
Also your table name PRINCIPALS
not match with PRINCIPAL
.