2

I have SQlite database which I kept in assets folder of my project. from assets folder I am doing copy of sqlite db to data\data\packagename\MYSHOES.sqlite. I am successfully retreive data from this database but when I am trying to insert data it's not doing any thing.No error message. Below is my code.

public class Shoedb extends SQLiteOpenHelper {
private SQLiteDatabase myDataBase;
private final Context myContext;

private static String DB_DIR = "/data/data/com.customlistview/";
private static String DB_NAME = "MYSHOES.sqlite";
private static String DB_PATH = DB_DIR + DB_NAME;
boolean dbfnd;
Cursor chk;
private String TAG = "Database Helper";

public Shoedb(Context context) {

    super(context, Shoedb.DB_NAME, null, 1);
    this.myContext = context;
    // DB_PATH=myContext.getDatabasePath(DB_NAME).getAbsolutePath();
    System.out.println("My DataBase Path: " + DB_PATH);
    try {
        copyDataBase();
        openDataBase();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void createDataBase() throws IOException {

    Log.e("createDataBase1", "+++++++++++++");
    boolean dbExist = checkDataBase();

    if (dbExist) {
        Log.e("createDataBase2", "++++++ database already exist");
        // do nothing - database already exist
    } else {

        // this.getReadableDatabase();

        try {

            copyDataBase();

        } catch (IOException e) {

            throw new Error("Error copying database");

        }
    }

}

private boolean checkDataBase() {

    SQLiteDatabase checkDB = null;

    try {
        String myPath = DB_PATH;
        checkDB = SQLiteDatabase.openDatabase(myPath, null,
                SQLiteDatabase.OPEN_READONLY);

    } catch (SQLiteException e) {
        // database does't exist yet.
    }
    if (checkDB != null) {
        checkDB.close();
    }

    return checkDB != null ? true : false;

}

private void copyDataBase() throws IOException {

    // Open your local db as the input stream
    InputStream myInput = myContext.getAssets().open(DB_NAME);

    // Path to the just created empty db
    String outFileName = DB_PATH;

    // Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);

    // transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }
    // Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();

}

public static void copyFile(InputStream fromFile, OutputStream toFile)
        throws IOException {
    // transfer bytes from the inputfile to the outputfile
    System.out.println("In copying.....");
    byte[] buffer = new byte[1024];
    int length;

    try {
        while ((length = fromFile.read(buffer)) > 0) {
            toFile.write(buffer, 0, length);
            System.out.println("Reading & writing the file....");
        }
    } catch (Exception e) {
        System.out.println("Error in copy1 file :" + e.toString());
    }
    // Close the streams
    finally {
        try {
            if (toFile != null) {
                try {
                    toFile.flush();
                } finally {
                    toFile.close();
                }
            }
        } catch (Exception e) {
            System.out.println("Error in copy2 file :" + e.toString());
        } finally {
            if (fromFile != null) {
                fromFile.close();
                System.out.println("File copied successfully.....");
            }
        }
    }
}

public static void copyFile(String fromFile, String toFile)
        throws IOException {
    copyFile(new FileInputStream(fromFile), new FileOutputStream(toFile));
}

// Open the database
public void openDataBase() {

    String myPath = DB_PATH;
    try {

        myDataBase = SQLiteDatabase.openDatabase(myPath, null,
                SQLiteDatabase.OPEN_READWRITE);
        System.out.println(myDataBase.toString()
                + " Database found....................!!!!!!!");
        dbfnd = true;
    } catch (Exception e) {
        System.out.println("Database not found....................!!!!!!!");
        // TODO: handle exception
        dbfnd = false;
    }
}

public SQLiteDatabase getReadableDatabase() {
    myDataBase = SQLiteDatabase.openDatabase(DB_PATH, null,

    SQLiteDatabase.OPEN_READONLY);
    return myDataBase;
}

public SQLiteDatabase getWritableDatabase() {
    myDataBase = SQLiteDatabase.openDatabase(DB_PATH, null,

    SQLiteDatabase.OPEN_READWRITE);

    return myDataBase;
}

@Override
public synchronized void close() {

    if (myDataBase != null)
        myDataBase.close();
    super.close();

}

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

public Cursor get_Data(String selCat) {
    chk = null;

    try {

        chk = myDataBase.rawQuery(
                "select Image,Price,Category from shoe_info where Category='"
                        + selCat + "'", null);

    } catch (Exception e) {
        Log.e(TAG, "Error in getshoeinfo");
        e.printStackTrace();
        return null;
    }
    return chk;

}

public Cursor get_DataImage(String pImage) {
    // TODO Auto-generated method stub
    chk = null;

    try {

        chk = myDataBase.rawQuery(
                "select Image,Price,Category from shoe_info where Image='"
                        + pImage + "'", null);

    } catch (Exception e) {
        Log.e(TAG, "Error in getshoeinfo");
        e.printStackTrace();
        return null;
    }
    return chk;
}
     //This code is not working
public void put_DataImage(String pImage, String price, String id) {
    // TODO Auto-generated method stub
    chk = null;

    try {
        System.out
                .println("insert into shoe_info(Image,Price,Category) values('"
                        + pImage + "','" + price + "','" + id + "');");
        myDataBase
                .execSQL("insert into shoe_info(Image,Price,Category) values('"
                        + pImage + "','" + price + "','" + id + "');");

    } catch (Exception e) {
        Log.e(TAG, "Error in getshoeinfo");
        e.printStackTrace();
    }
}

public void put_DataToCart(String image, String price, String pCat) {
    // TODO Auto-generated method stub
    Log.i(TAG, "Insert to mycarttttttttttttttttttt");
    try {
        System.out
                .println("insert into mycart (Image,Price,category) values('"
                        + image + "','" + price + "','" + pCat + "');");

        myDataBase
                .execSQL("insert into mycart(Image,Price,category) values('"
                        + image + "','" + price + "','" + pCat + "')");

    } catch (Exception e) {
        Log.e(TAG, "Error in put_DataToCart");
        e.printStackTrace();
    }
}

public Cursor get_DataFromCart() {
    chk = null;

    try {
        System.out.println("select Image,Price,category from mycart");
        chk = myDataBase.rawQuery(
                "select Image,Price,category from mycart", null);

    } catch (Exception e) {
        Log.e(TAG, "Error in getshoeinfo");
        e.printStackTrace();
        return null;
    }
    return chk;

}

}

1 Answer 1

2

Try using

SQLiteDatabase.OPEN_READWRITE instead of SQLiteDatabase.OPEN_READONLY

in checkDataBase() while open connection to DB. Currently connection to DB is read only...

Sign up to request clarification or add additional context in comments.

1 Comment

Which method are you calling for inserting data...also if possible plz provide the exception stack trace if any....that will help

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.