-2

This is my SQLiteHelper class.

package com.example.user.balancesheet;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper{
    private static final int DB_Version=1;
    private static final String Database="BalanceSheet.db";
    public static String Tablename="balance_table";

     public DatabaseHelper(Context context) {
        super(context, Database, null, DB_Version);
         SQLiteDatabase db=this.getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        Log.d("METHOD", "onCreate");
        String query="CREATE TABLE " + Tablename +" (ID INTEGER, 
        ACCOUNT_HOLDER TEXT, DEBIT INTEGER, CREDIT INTEGER, BALANCE 
        INTEGER)";
       db.execSQL(query);
        Log.d("Table", "onCreate");
   }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
        db.execSQL("DROP IF EXIST " + Tablename);
        onCreate(db);
    }

    public Boolean insertdata(int i, String name, int deb, int cred, int 
    bal){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues val=new ContentValues();
        val.put("ID", i);
        val.put("ACCOUNT_HOLDER", name);
        val.put("DEBIT", deb);
        val.put("CREDIT_HOLDER", cred);
        val.put("BALANCE", bal);
        long result=db.insert(Tablename, null, val);
        Log.d("METHOD","ADDLEDGER");
        if(result==-1)
            return false;
        else
            return true;
    }

    public Cursor showData(){
        SQLiteDatabase db=this.getWritableDatabase();
        Cursor c=db.rawQuery("select * from " + Tablename, null);
        Log.d("Method", "showData");
        return c;
    }
}

This the function where this class is being called for creating table and inserting values in it.

 save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatabaseHelper db=new DatabaseHelper(NewFile.this);
                int i;
                Boolean flag=false;
                for(i=0;i<20;i++)
                    flag=db.insertdata(i, name[i], debit[i], credit[i], 
                    bal[i]);
                if(flag==true)
                    Toast.makeText(getApplicationContext(), "File Saved 
                    Successfully.", Toast.LENGTH_LONG).show();
                else
                    Toast.makeText(getApplicationContext(), "Error! File Not 
                    Saved.", Toast.LENGTH_LONG).show();
            }
        });

As soon as I click save after entering values, it always displays the Toast "Error! File Not Saved.". I don't know what is the error.

I also tried to display the table(in case the table may have been created and it may still have been showing false Toast) by the following function.

 but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tablename=table.getText().toString();
                DatabaseHelper dbHandler=new DatabaseHelper(File.this);
                int i=0;
                Cursor c = dbHandler.showData();
                if(c.getCount()==0)
                    Toast.makeText(getApplicationContext(), "No Data 
                    Found!", Toast.LENGTH_LONG).show();

                while (c.moveToNext()&&i<20){
                    name[i]=c.getString(1);
                    debit[i]=Integer.parseInt(c.getString(2));
                     credit[i]=Integer.parseInt(c.getString(3));
                     bal[i]=Integer.parseInt(c.getString(4));
                    i++;
                }
});

This time, it was showing the Toast "No Data Found". I am not able to find the reason behind this. Please help.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Mayank Jindal
  • 35
  • 2
  • 7

1 Answers1

1

Use column CREDIT instead of CREDIT_HOLDER

Update insertdata() method as below:

    public Boolean insertdata(int i, String name, int deb, int cred, int bal) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues val = new ContentValues();
        val.put("ID", i);
        val.put("ACCOUNT_HOLDER", name);
        val.put("DEBIT", deb);
        val.put("CREDIT", cred);
        val.put("BALANCE", bal);
        long result = db.insert(Tablename, null, val);

        Log.d("METHOD","ADDLEDGER");

        if(result==-1)
            return false;
        else
            return true;
    }
Ferdous Ahamed
  • 21,438
  • 5
  • 52
  • 61