не могу понять почему выскакивает SQLiteException на строке:
long rowID = db.insert(NAME_TABLE, null, cv);
06-28 12:27:34.650: I/dalvikvm(1209): threadid=3: reacting to signal 3
06-28 12:27:34.660: I/dalvikvm(1209): Wrote stack traces to '/data/anr/traces.txt'
06-28 12:27:34.890: D/gralloc_goldfish(1209): Emulator without GPU emulation detected.
06-28 12:27:39.990: I/SqliteDatabaseCpp(1209): sqlite returned: error code = 1, msg = no such table: image, db=/data/data/titov.mytest.namespace/databases/rss
06-28 12:27:40.020: E/SQLiteDatabase(1209): Error inserting _id=0 name=/data/data/titov.mutest.namespace/files/foxnews.jpg
06-28 12:27:40.020: E/SQLiteDatabase(1209): android.database.sqlite.SQLiteException: no such table: image: , while compiling: INSERT INTO image(_id,name) VALUES (?,?)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:112)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1718)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1591)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at titov.mytest.namespace.RssListActivity.createDataBase(RssListActivity.java:54)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at titov.mytest.namespace.RssListActivity.init(RssListActivity.java:37)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at titov.mytest.namespace.RssListActivity.onCreate(RssListActivity.java:28)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.Activity.performCreate(Activity.java:4465)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1797)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.widget.TabHost.setCurrentTab(TabHost.java:346)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.view.View.performClick(View.java:3511)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.view.View$PerformClick.run(View.java:14105)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.os.Handler.handleCallback(Handler.java:605)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.os.Looper.loop(Looper.java:137)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at java.lang.reflect.Method.invoke(Method.java:511)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-28 12:27:40.020: E/SQLiteDatabase(1209): at dalvik.system.NativeStart.main(Native Method)
06-28 12:27:40.020: D/MyTag(1209): row inserted, ID = -1
не может найти таблицу с названием
image, првоерил в эмуляторе файл базы создаётся и не пустой, что то ж так создаётся, но почему при вставке данных не находит таблицу?
Вот код:
Код: Выделить всё
import java.util.ArrayList;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
public class RssListActivity extends Activity {
private ArrayList<RssItem> items = new ArrayList<RssItem>();
private RssAdapter adapter;
private DBHelper dbHelper;
public SQLiteDatabase db;
public static final String NAME_DATABASE = "rss", NAME_TABLE = "image",
NAME_ID_COLUMN = "_id", NAME_NAME_COLUMN = "name", IMAGE_PATH = "/data/data/titov.mutest.namespace/files/foxnews.jpg",
CREATE_TABLE = "CREATE TABLE " + NAME_TABLE + " (" + NAME_ID_COLUMN + " INTEGER PRImARY KEY AUTOINCREMENT, " + NAME_NAME_COLUMN + " TEXT);";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_list);
init();
}
public void init() {
/*items.add(new RssItem(R.drawable.bbc));
items.add(new RssItem(R.drawable.eurosportnews));
items.add(new RssItem(R.drawable.foxnews));
items.add(new RssItem(R.drawable.skynews));*/
dbHelper = new DBHelper(RssListActivity.this);
createDataBase();
//readOfDataBase();
adapter = new RssAdapter(this, items);
ListView lvMain = (ListView) findViewById(R.id.lvMain);
lvMain.setAdapter(adapter);
}
public void createDataBase() {
try {
// создаем объект для данных
ContentValues cv = new ContentValues();
// подключаемся к БД
SQLiteDatabase db = dbHelper.getWritableDatabase();
// подготовим данные для вставки в виде пар: наименование столбца - значение
//cv.put(NAME_ID_COLUMN, "0");
cv.put(NAME_NAME_COLUMN, IMAGE_PATH);
// вставляем запись и получаем ее ID
long rowID = db.insert(NAME_TABLE, null, cv);
Log.d("MyTag", "row inserted, ID = " + rowID);
} catch(Exception e) {
Log.i("MyTag", "create or insert");
e.printStackTrace();
}
}
public void readOfDataBase() {
dbHelper = new DBHelper(this);
//ContentValues cv = new ContentValues();
//SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor c = db.query(NAME_TABLE, null, null, null, null, null, null);
// ставим позицию курсора на первую строку выборки
// если в выборке нет строк, вернется false
if (c.moveToFirst()) {
// определяем номера столбцов по имени в выборке
int idColIndex = c.getColumnIndex(NAME_ID_COLUMN);
int nameColIndex = c.getColumnIndex(NAME_NAME_COLUMN);
do {
// получаем значения по номерам столбцов и пишем все в лог
items.add(new RssItem(c.getString(nameColIndex)));
} while (c.moveToNext());
}
else
Log.d("MyTag", "0 rows");
}
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, NAME_DATABASE, null, 1);
}
public void onCreate(SQLiteDatabase arg0) {
try{
// создаем таблицу с полями
db.execSQL(CREATE_TABLE);
} catch(Exception e) {
Log.i("myTag", "create in create class");
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
}