java - Getting SQLite no such column -
this database, can please me it? think there nothing wrong tried reinstalling app update database still doesnt work. says there no such column _url.
this class creates database:
mysqlitehelper.java
public class mysqlitehelper extends sqliteopenhelper { /** * table locations * | _id | _latitude | _longitude | _time | _provider */ public static final string table_location = "location"; public static final string column_locid = "_id"; public static final string column_latitude = "_latitude"; public static final string column_longitude = "_longitude"; public static final string column_time = "_time"; public static final string column_accuracy = "_accuracy"; public static final string column_provider = "_provider"; /** * table pictures * | _id | _url | _latitude | _longitude | _time */ public static final string table_picture = "picture"; public static final string column_pic_id = "_id"; public static final string column_pic_url = "_url"; public static final string column_pic_latitude = "_latitude"; public static final string column_pic_longitude = "_longitude"; public static final string column_pic_time = "_time"; public static final string column_pic_accuracy = "_accuracy"; /** * table accelerometer * | _id | _x | _y | _z | _time */ public static final string table_accelerometer = "accelerometer"; public static final string column_accelerometer_id = "_id"; public static final string column_accelerometer_x = "_x"; public static final string column_accelerometer_y = "_y"; public static final string column_accelerometer_z = "_z"; public static final string column_accelerometer_time = "_time"; /** * table sound * | _id | _amplitude | _time */ public static final string table_amplitude = "sound"; public static final string column_amplitude_id = "_id"; public static final string column_amplitude_amplitude = "_amplitude"; public static final string column_amplitude_time = "_time"; private static final string database_name = "memory.db"; private static final int database_version = 1; // database creation sql statement location private static final string database_create_loc = "create table " + table_location + "(" + column_locid + " integer primary key autoincrement, " + column_latitude + " double not null, "+ column_longitude + " double not null, " + column_time + " text not null, " + column_accuracy + " text not null, " + column_provider + " text not null " +");"; // database creation sql statement picture private static final string database_create_pic = "create table " + table_picture + "(" + column_pic_id + " integer primary key autoincrement, " + column_pic_url + " text not null, " + column_latitude + " double, "+ column_longitude + " double, " + column_time + " text, " + column_pic_accuracy + " text " + ");"; // database creation sql statement accelerometer private static final string database_create_accelerometer = "create table " + table_accelerometer + "(" + column_accelerometer_id + " integer primary key autoincrement, " + column_accelerometer_x + " float not null, " + column_accelerometer_y + " float not null, "+ column_accelerometer_z + " float not null, " + column_accelerometer_time + " text " +");"; // database creation sql statement sound private static final string database_create_amplitude = "create table " + table_amplitude + "(" + column_amplitude_id + " integer primary key autoincrement, " + column_amplitude_amplitude + " double not null, " + column_amplitude_time + " text " +");"; public mysqlitehelper(context context) { super(context, database_name, null, database_version); } @override public void oncreate(sqlitedatabase database) { database.execsql(database_create_loc); database.execsql(database_create_pic); database.execsql(database_create_accelerometer); database.execsql(database_create_amplitude); } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { log.w(mysqlitehelper.class.getname(), "upgrading database version " + oldversion + " " + newversion + ", destroy old data"); db.execsql("drop table if exists " + table_location); db.execsql("drop table if exists " + table_picture); db.execsql("drop table if exists " + table_accelerometer); db.execsql("drop table if exists " + table_amplitude); oncreate(db); } }
i dont find wrong in tables. checked spaces.
the error is:
03-24 17:51:39.851: e/sqlitelog(18574): (1) no such column: _url 03-24 17:51:39.855: w/dalvikvm(18574): threadid=11: thread exiting uncaught exception (group=0x40eb0300) 03-24 17:51:39.863: e/androidruntime(18574): fatal exception: thread-799 03-24 17:51:39.863: e/androidruntime(18574): android.database.sqlite.sqliteexception: no such column: _url (code 1): , while compiling: select _id, _url, _latitude, _longitude, _time, _accuracy picture 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqliteconnection.nativepreparestatement(native method) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqliteconnection.acquirepreparedstatement(sqliteconnection.java:882) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqliteconnection.prepare(sqliteconnection.java:493) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitesession.prepare(sqlitesession.java:588) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqliteprogram.<init>(sqliteprogram.java:58) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitequery.<init>(sqlitequery.java:37) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitedirectcursordriver.query(sqlitedirectcursordriver.java:44) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitedatabase.rawquerywithfactory(sqlitedatabase.java:1314) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitedatabase.querywithfactory(sqlitedatabase.java:1161) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitedatabase.query(sqlitedatabase.java:1032) 03-24 17:51:39.863: e/androidruntime(18574): @ android.database.sqlite.sqlitedatabase.query(sqlitedatabase.java:1200) 03-24 17:51:39.863: e/androidruntime(18574): @ data.databaseinteraction.getallpictures(databaseinteraction.java:191) 03-24 17:51:39.863: e/androidruntime(18574): @ main.insituapp.insituapp$3.run(insituapp.java:327)
i have class uses database class insert , query data , database.
databaseinteraction.java
public class databaseinteraction { // database fields private sqlitedatabase database; private mysqlitehelper dbhelper; private string[] loccolumns = { mysqlitehelper.column_locid, mysqlitehelper.column_latitude, mysqlitehelper.column_longitude, mysqlitehelper.column_time, mysqlitehelper.column_accuracy, mysqlitehelper.column_provider}; private string[] piccolumns = { mysqlitehelper.column_pic_id, mysqlitehelper.column_pic_url, mysqlitehelper.column_pic_latitude, mysqlitehelper.column_pic_longitude, mysqlitehelper.column_pic_time, mysqlitehelper.column_pic_accuracy }; private string[] acccolumns = { mysqlitehelper.column_accelerometer_id, mysqlitehelper.column_accelerometer_x, mysqlitehelper.column_accelerometer_y, mysqlitehelper.column_accelerometer_z, mysqlitehelper.column_accelerometer_time }; private string[] amplitudecolumns = { mysqlitehelper.column_amplitude_id, mysqlitehelper.column_amplitude_amplitude, mysqlitehelper.column_amplitude_time }; public databaseinteraction(context context) { dbhelper = new mysqlitehelper(context); } public void open() throws sqlexception { database = dbhelper.getwritabledatabase(); } public void close() { dbhelper.close(); } public /*loc*/ long createlocation(double latitude, double longitude, long time, double accuracy, string provider) { contentvalues values = new contentvalues(); values.put(mysqlitehelper.column_latitude, latitude); values.put(mysqlitehelper.column_longitude, longitude); values.put(mysqlitehelper.column_time, time); values.put(mysqlitehelper.column_accuracy, accuracy); values.put(mysqlitehelper.column_provider, provider); open(); long insertid = database.insert(mysqlitehelper.table_location, null, values); close(); return insertid; /*cursor cursor = database.query(mysqlitehelper.table_location, loccolumns, mysqlitehelper.column_locid + " = " + insertid, null, null, null, null); cursor.movetofirst(); loc newloc = cursortolocation(cursor); cursor.close(); return newloc;*/ } public long createpic(string url, double latitude, double longitude, long time) { contentvalues values = new contentvalues(); values.put(mysqlitehelper.column_pic_url, url); values.put(mysqlitehelper.column_latitude, latitude); values.put(mysqlitehelper.column_longitude, longitude); values.put(mysqlitehelper.column_time, time); open(); long insertid = database.insert(mysqlitehelper.table_picture, null, values); close(); return insertid; /*cursor cursor = database.query(mysqlitehelper.table_picture, piccolumns, mysqlitehelper.column_pic_id + " = " + insertid, null, null, null, null); cursor.movetofirst(); pic newpic = cursortopicture(cursor); cursor.close(); return newpic;*/ } public long createaccelerometer(float x, float y, float z, long time) { contentvalues values = new contentvalues(); values.put(mysqlitehelper.column_accelerometer_x, x); values.put(mysqlitehelper.column_accelerometer_y, y); values.put(mysqlitehelper.column_accelerometer_z, z); values.put(mysqlitehelper.column_accelerometer_time, time); open(); long insertid = database.insert(mysqlitehelper.table_accelerometer, null, values); close(); return insertid; } public long createsound(double amplitude, long time) { contentvalues values = new contentvalues(); values.put(mysqlitehelper.column_amplitude_amplitude, amplitude); values.put(mysqlitehelper.column_amplitude_time, time); open(); long insertid = database.insert(mysqlitehelper.table_amplitude, null, values); close(); return insertid; } public int deletelocation(long id) { system.out.println("location deleted id: " + id); open(); int value = database.delete(mysqlitehelper.table_location, mysqlitehelper.column_locid + " = " + id, null); close(); return value; } public int deletepic(long id){ system.out.println("picture deleted id: " + id); open(); int value = database.delete(mysqlitehelper.table_picture, mysqlitehelper.column_pic_id + " = " + id, null); close(); return value; } public int deleteaccelerometer(long id){ system.out.println("accelerometer deleted id: " + id); open(); int value = database.delete(mysqlitehelper.table_accelerometer, mysqlitehelper.column_accelerometer_id + " = " + id, null); return value; } public int deletesound(long id){ system.out.println("sound deleted id: " + id); open(); int value = database.delete(mysqlitehelper.table_amplitude, mysqlitehelper.column_amplitude_id + " = " + id, null); close(); return value; } public list<loc> getalllocations() { list<loc> alllocations = new arraylist<loc>(); open(); cursor cursor = database.query(mysqlitehelper.table_location, loccolumns, null, null, null, null, null); cursor.movetofirst(); while (!cursor.isafterlast()) { loc oneloc = cursortolocation(cursor); alllocations.add(oneloc); cursor.movetonext(); } // make sure close cursor cursor.close(); close(); return alllocations; } public list<pic> getallpictures() { list<pic> allpictures = new arraylist<pic>(); open(); cursor cursor = database.query(mysqlitehelper.table_picture, piccolumns, null, null, null, null, null); cursor.movetofirst(); while (!cursor.isafterlast()) { pic onepic = cursortopicture(cursor); allpictures.add(onepic); cursor.movetonext(); } // make sure close cursor cursor.close(); close(); return allpictures; } public list<accelerometer> getallaccelerometervalues() { list<accelerometer> allaccelerometervalues = new arraylist<accelerometer>(); cursor cursor = database.query(mysqlitehelper.table_accelerometer, acccolumns, null, null, null, null, null); cursor.movetofirst(); while (!cursor.isafterlast()) { accelerometer oneacc = cursortoaccelerometer(cursor); allaccelerometervalues.add(oneacc); cursor.movetonext(); } // make sure close cursor cursor.close(); return allaccelerometervalues; } public list<amplitude> getallsoundampitudes() { list<amplitude> allsoundamplitudes = new arraylist<amplitude>(); cursor cursor = database.query(mysqlitehelper.table_amplitude, amplitudecolumns, null, null, null, null, null); cursor.movetofirst(); while (!cursor.isafterlast()) { amplitude onesound = cursortoamplitude(cursor); allsoundamplitudes.add(onesound); cursor.movetonext(); } // make sure close cursor cursor.close(); return allsoundamplitudes; } private loc cursortolocation(cursor cursor) { loc location = new loc(); location.setlatitude(cursor.getdouble(1)); location.setlongitude(cursor.getdouble(2)); location.settime(cursor.getlong(3)); location.setaccuracy(cursor.getdouble(4)); return location; } private pic cursortopicture(cursor cursor) { pic picture = new pic(); picture.setlatitude(cursor.getdouble(1)); picture.setlongitude(cursor.getdouble(2)); picture.settime(cursor.getlong(3)); return picture; } private accelerometer cursortoaccelerometer(cursor cursor) { accelerometer acc = new accelerometer(); acc.setx(cursor.getfloat(1)); acc.sety(cursor.getfloat(2)); acc.setz(cursor.getfloat(3)); acc.settime(cursor.getlong(4)); return acc; } private amplitude cursortoamplitude(cursor cursor) { amplitude sound = new amplitude(); sound.setamplitude(cursor.getdouble(1)); sound.settime(cursor.getlong(2)); return sound; } }
please hint appreciated. ty in advance.
probably have different "picture" table structure, try deleting current application, oncreate(sqlitedatabase database)
method create correct structure.
Comments
Post a Comment