Форум программистов, компьютерный форум CyberForum.ru

No such table - Android

Восстановить пароль Регистрация
 
sofron
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 21
04.05.2016, 21:24     No such table #1
сколько что не менял все равно одна и та же ошибка:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mypc.view/com.example.mypc.view.MainActivity}: android.database.sqlite.SQLiteException: no such table: mydb (code 1): , while compiling: SELECT * FROM mydb
таблица mydb существует
но может быть ошибка в обращении
main activity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener,
        DialogInterface.OnClickListener {
    DataBaseHelp dbHelper;
    SQLiteDatabase db;
    String[] data = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"};
    final String LOG_TAG = "myLogs";
    GridView gvMain;
    ArrayAdapter<String> adapter;
    private TextView mSelectText;
 
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Cursor c = null;
        try {
            readtolog(c);
        } catch (IOException e) {
            e.printStackTrace();
        }
 
 
        mSelectText = (TextView) findViewById(R.id.info);
        adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data);
        final GridView gvMain = (GridView) findViewById(R.id.gridView1);
        gvMain.setAdapter(adapter);
        gvMain.setOnItemSelectedListener(this);
        gvMain.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
                // TODO Auto-generated method stub
                mSelectText.setText(mSelectText.getText()+ adapter.getItem(position));
            }
        });
    }
 
    private void readtolog(Cursor c) throws IOException {
        dbHelper = new DataBaseHelp(this);
        db = dbHelper.getWritableDatabase();
 
        Log.d(LOG_TAG, "-- назначаем курсору С данные из БД --");
        c = db.query("mydb", null, null, null, null, null, null);
 
        Log.d(LOG_TAG, "--Данные назначены курсору С--");
        if (c != null) {
            if (c.moveToFirst()) {
                String str;
                do {
                    str = "";
                    for (String cn : c.getColumnNames()) {
                        str = str.concat(cn + "=" + c.getString(c.getColumnIndex(cn)) + ";");
                    }
                    Log.d(LOG_TAG, str);
 
                }
                while (c.moveToNext());
            }
            c.close();
        } else
            Log.d(LOG_TAG, "Cursor is null");
        dbHelper.close();
    }
 
 
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position,
                               long id) {
        mSelectText.setText(mSelectText.getText() + adapter.getItem(position));
    }
 
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        mSelectText.setText("");
    }
 
    @Override
    public void onClick(DialogInterface dialog, int which) {
 
    }
}
а вот класс DataBaseHelp
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
public class DataBaseHelp extends SQLiteOpenHelper {
 
    // путь к базе данных вашего приложения
    private static String DB_PATH = "/data/data/com.example.mypc.view/databases/";
    private static String DB_NAME = "words";
    private SQLiteDatabase myDataBase;
    private final Context mContext;
 
    /**
     * Конструктор
     * Принимает и сохраняет ссылку на переданный контекст для доступа к ресурсам приложения
     *
     * @param context
     */
    public DataBaseHelp(Context context) {
        super(context, DB_NAME, null, 1);
        this.mContext = context;
    }
 
    /**
     * Создает пустую базу данных и перезаписывает ее нашей собственной базой
     */
    public void createDb() throws IOException {
        boolean dbExist = checkDataBase();
 
        if (dbExist) {
            //ничего не делать - база уже есть
        } else {
            //вызывая этот метод создаем пустую базу, позже она будет перезаписана
            this.getReadableDatabase();
 
            try {
                copyDataBase();
            } catch (IOException e) {
                throw new Error("Error copying database");
            }
        }
    }
 
    /**
     * Проверяет, существует ли уже эта база, чтобы не копировать каждый раз при запуске приложения
     *
     * @return true если существует, false если не существует
     */
    private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
 
        try {
            String myPath = DB_PATH + DB_NAME;
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
        } catch (SQLiteException e) {
            //база еще не существует
        }
        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }
 
    /**
     * Копирует базу из папки assets заместо созданной локальной БД
     * Выполняется путем копирования потока байтов.
     */
    private void copyDataBase() throws IOException {
        //Открываем локальную БД как входящий поток
        InputStream myInput = mContext.getAssets().open(DB_NAME);
 
        //Путь ко вновь созданной БД
        String outFileName = DB_PATH + DB_NAME;
 
        //Открываем пустую базу данных как исходящий поток
        OutputStream myOutput = new FileOutputStream(outFileName);
 
        //перемещаем байты из входящего файла в исходящий
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
 
        //закрываем потоки
        myOutput.flush();
        myOutput.close();
        myInput.close();
    }
 
    public void openDataBase() throws SQLException {
        //открываем БД
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }
 
    @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) {
    }
}
подскажите люди умные
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2016, 21:24     No such table
Посмотрите здесь:

C++ table *str=new table [n];
Объединение таблиц без #Table и @Table SQL Server
SQL Server select s odnoi table, and insert v drygyjy table
JavaScript Как можно в <table id="tb1 </table> вписать w ??
В чем различия Table, View, Procedure, Scalar function и Table function SQL Server
Android как правильно раставить кнопки в Table Row?
DROOP TABLE и CREATE TABLE в ACCESS MS Access
PHP БД CDbCommand failed to execute the SQL statement: SQLSTATE[42S02]: Base table or view not found: 1146 Table doesn't exist
C# Получение значения из определенной ячейки <table></table>
Android SQLiteException: table event has no column named
Очистка переменной(до <table> и после </table>) PHP
Table layout с фиксированной шапкой Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 04:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru