Java 我无法使用自定义sqlite绑定创建数据库
我为android studio定制了Sqlite。 能够存储多边形坐标 但是运行我的代码会产生错误 原因:org.sqlite.database.sqlite.sqliteCantoPendDatabaseException:未知错误(代码14):无法打开数据库 当triying到getReadableDatabase()时 TestOpenHelper类 数据库合同类Java 我无法使用自定义sqlite绑定创建数据库,java,android,android-sqlite,Java,Android,Android Sqlite,我为android studio定制了Sqlite。 能够存储多边形坐标 但是运行我的代码会产生错误 原因:org.sqlite.database.sqlite.sqliteCantoPendDatabaseException:未知错误(代码14):无法打开数据库 当triying到getReadableDatabase()时 TestOpenHelper类 数据库合同类 }我有一个类似的问题,我用提供的解决方案CL解决了它我有一个类似的问题,我用提供的解决方案CL解决了它尝试验证存储权限,即a
}我有一个类似的问题,我用提供的解决方案CL解决了它我有一个类似的问题,我用提供的解决方案CL解决了它尝试验证存储权限,即android.permission.WRITE\u EXTERNAL\u storage我看到您正在以只读模式打开数据库写入将失败,你能用GetWritableDatabase替换getReadbleDatabase吗?我确实提供了存储权限。当我将其更改为getWritable时出现了相同的错误“仅供参考,此时尚未创建数据库请尝试验证存储权限,即android.permission.WRITE_EXTERNAL_STORAGEI如果您以只读模式打开数据库,写入将失败,能否将getReadbleDatabase替换为GetWritableDatabase我提供了存储权限。当我将其更改为getWritable时出现相同错误。”“仅供参考,目前尚未创建数据库
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private TestOpenHelper mOpenHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.loadLibrary("sqliteX");
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mOpenHelper = new TestOpenHelper(this);
mOpenHelper.getReadableDatabase();
import org.sqlite.database.sqlite.SQLiteDatabase;;
import org.sqlite.database.sqlite.SQLiteOpenHelper;
public class TestOpenHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "test.db";
public static final int DaATABASE_VERISION = 1;
public TestOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DaATABASE_VERISION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TestDatabaseContract.OwnerInfoEntry.SQL_CREATE_TABLE);
db.execSQL(TestDatabaseContract.PropertyInfoEntry.SQL_CREATE_TABLE);
DatabaseDataWorker worker = new DatabaseDataWorker(db);
worker.insertOwnerInfo();
worker.insertPropertyInfo();
}
import android.provider.BaseColumns;
public final class TestDatabaseContract {
private TestDatabaseContract() {}
public static final class PropertyInfoEntry {
public static final String TABLE_NAME = "property_info";
public static final String COLUMN_PROPERTY_ID = "property_id";
public static final String SQL_CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " USING geopoly(" + COLUMN_PROPERTY_ID + ")";
}
public static final class OwnerInfoEntry implements BaseColumns{
public static final String TABLE_NAME = "owner_info";
public static final String COLUMN_OWNER_ID = "id";
public static final String COLUMN_OWNER_NAME = "name";
public static final String COLUMN_OWNER_LOCATION = "location";
public static final String COLUMN_PROPERTY_ID = "property_id";
public static final String SQL_CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY, " +
COLUMN_OWNER_ID + " INTEGER UNIQUE NOT NULL, " +
COLUMN_OWNER_NAME + " TEXT NOT NULL, " +
COLUMN_OWNER_LOCATION + " TEXT NOT NULL, " +
COLUMN_PROPERTY_ID + " TEXT)";
}