Копирование приведенного выше кода в SQLCon.java и ContractSQL.java соответственно, а затем использование кода из действия с использованием: -
public class MainActivity extends AppCompatActivity {
AdminSQLiteOpenHelper mASQLiteHlpr;
SQLCon mSQLcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSQLcon = new SQLCon(this);
Cursor csr = mSQLcon.getWritableDatabase().query("sqlite_master",null,null,null,null,null,null);
while (csr.moveToNext()) {
Log.d("DBINFO", "Found Item " + csr.getString(csr.getColumnIndex("name")));
}
csr.close();
}
}
Работает нормально и выдает в журнале следующее: -
10-25 19:40:37.311 1164-1164/axtest.axtest D/CREATEUSERTABLETAG: CREATE Table IF NOT EXISTS _user_( _id_ INTEGER PRIMARY KEY autoincrement,_fn_ varchar(45),_sn_ varchar(45),_em_ varchar(45),_group_ varchar(45),_pw_ varchar(45));
10-25 19:40:37.311 1164-1164/axtest.axtest D/DBINFO: Found Item android_metadata
10-25 19:40:37.311 1164-1164/axtest.axtest D/DBINFO: Found Item _user_
10-25 19:40:37.311 1164-1164/axtest.axtest D/DBINFO: Found Item sqlite_sequence
- android_metadata - это таблица, созданная с помощью кода SQLite, доступного с android (используется для локали).
- sqlite_sequence создана из-за того, что вы закодировали AUTOINCREMENT.Он содержит самый высокий rowid , используемый на сегодняшний день (если не изменен).
- кодирование
?? INTEGER PRIMARY KEY
(с или без AUTOINCREMENT) делает столбец ??( id в вашем случае) псевдоним специального столбца rowid . rowid - 64-разрядное целое число без знака.Первоначально он будет равен 1, а затем, как правило, будет увеличиваться на 1 (хотя нет гарантии, что он будет). - AUTOINCREMENT имеет накладные расходы и только вводит ограничение, что rowid всегда должен быть больше.Это редко требуется, и рекомендуется не использовать AUTOINCREMENT. SQLite Autoincrement
Таким образом, может показаться, что вы либо не проверяете, чтотаблица существует с использованием метода звука (пример метода звука включен в приведенный выше код) или что существуют некоторые внешние ограничения из-за различных сред.
Принятие вышеуказанного кода, который запрашивает таблицу sqlite_master
, покажет, создается ли таблица.