天道酬勤,学无止境

DBAccess creating custom DBAccessSettings

问题

我正在测试 DBAccess 以查看是否可以在项目中使用它。 我在更改 sqlite 文件的位置时遇到问题,我希望它位于缓存目录中。 这是我到目前为止在 AppDelegate.m 中编写的部分代码:

- (DBAccessSettings*)getCustomSettings {
    DBAccessSettings *settings = [[DBAccessSettings alloc] init];
    NSURL *applicationCachesDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
    settings.databaseLocation = [applicationCachesDirectory absoluteString];
    settings.defaultDatabaseName = @"myDefaultDB";
    return settings;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [DBAccess setDelegate:self];
    [DBAccess openDatabaseNamed:@"NSURLProtocolExample"];    
    [NSURLProtocol registerClass:[MyURLProtocol class]];
    return YES;
}

但是使用上面的代码,我收到以下错误消息:

错误>>无法打开数据库文件

你能在这里阐明一下吗?

回答1

我不熟悉 DBAccess,但你有以下几行:

NSURL *applicationCachesDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
settings.databaseLocation = [applicationCachesDirectory absoluteString];

这将检索 URL 字符串(以file://开头的字符串),而不是文件路径。 如果你想要那个文件夹的路径,你想使用path

settings.databaseLocation = [applicationCachesDirectory path];

坦率地说,文档对于它是否期望 URL 字符串或路径是模棱两可的,但我认为它期望后者。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • DBAccess creating custom DBAccessSettings
    I am testing DBAccess in order to see if I can use it in a project. I have problems changing the location of the sqlite file, I want it to be in cache directory. Here is part of the code I wrote until now, in AppDelegate.m : - (DBAccessSettings*)getCustomSettings { DBAccessSettings *settings = [[DBAccessSettings alloc] init]; NSURL *applicationCachesDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject]; settings.databaseLocation = [applicationCachesDirectory absoluteString]; settings.defaultDatabaseName = @"myDefaultDB"; return
  • 以面向对象的方式管理 Java 中的 Mongodb 连接(Managing Mongodb connections in Java as Object Oriented)
    问题 如何使用多个类正确管理 mongo 连接? 例如,我有 4 个管理 4 个集合的类。 Collection1.class Collection2.class 等等。 我所做的是在每个类中创建一个连接和关闭方法,这会减慢应用程序中某些事务的连接速度 除了创建每个类的对象并分别连接每个类之外,将应用程序连接到数据库一次并开始使用所有类实例的最佳方法是什么? 回答1 在应用程序中,使用连接池的具有所需连接数的单个MongoClient对象将在这种情况下工作。 连接池的默认值为100 ,可以根据需要修改(或配置)。 mongo 客户端对象可以在应用程序启动时创建,只有在应用程序关闭时才关闭。 这节省了与每个集合访问类中的 mongo 客户端对象创建连接相关的资源。 可以在整个应用程序中使用相同的 mongo 客户端对象。 应用程序中需要连接到 MongoDB 数据库服务器的任何其他对象都可以访问单例类(它维护 mongo 客户端对象的一个​​实例)。 什么是连接池? 在软件工程中,连接池是维护数据库连接的缓存,以便将来需要对数据库的请求时可以重用连接。 连接池用于提高在数据库上执行命令的性能。 为每个用户打开和维护数据库连接,尤其是对动态数据库驱动的网站应用程序的请求,成本高昂且浪费资源。 在连接池中,创建连接后,将其放入池中并再次使用,这样就不必建立新连接。 如果所有连接都被使用
  • unity学习笔记之SQLite
    SQLite配置 1、在Assets目录下创建Plugins目录,将Mono.Data.Sqlite.dll,System.Data.dll,sqlite3.dll三个文件放到工程Plugins目录下。 2、在Assets目录下创建StreamingAssets目录,把db放在该目录内。 3、将DbAccess.cs脚本添加到工程中。 安卓和iOS端要多一个步骤,在Plugins目录下建立安卓/iOS目录,再将libsqlite3.so放到目录下。 using Mono.Data.Sqlite; using System.IO; DbAccess db; //数据库 string appDBPath;//数据库路径 appDBPath = Application.streamingAssetsPath +"/Test.db"; db = new DbAccess("URI=file:"+ appDBPath); //创建、打开数据库 db.CloseSqlConnection();//闭数据库 Mono.Data.Sqlite.dll,System.Data.dll在unity安装目录中,libsqlite3.so和sqlite3.dll(有32位和64位)在网上下载 发布时的注意事项 在PlaySettings中修改Api Compatibility Level改成NET 2.0
  • iOS5、StoryBoards、ARC:奇怪的类别问题(iOS5, StoryBoards, ARC: Weird categories issue)
    问题
  • iOS5, StoryBoards, ARC: Weird categories issue
    I've created a file with sql methods and now this file is really large. I'd like to split it for best practice and implementation simplicity. So, categories. I've created in xCode new objective-c categories file -> DBAccess+Generals.h (.m). .h: #import "DBAccess.h" @interface DBAccess (Generals) -(void)newMeth; @end .m #import "DBAccess+Generals.h" #import "DBAccess.h" @implementation DBAccess (Generals) -(void)newMeth { NSLog(@"New Meth"); } @end In DBAccess.h #import <Foundation/Foundation.h> #import <sqlite3.h> #import "DBAccess+Generals.h" @interface DBAccess : NSObject { NSString
  • 在 DBAccess 中关联两个对象(Relating two objects in DBAccess)
    问题 我正在为我的 iOS 项目使用 dbaccess。 如何将数组传递给 dbaccess 对象? 例如:我有 dbobject 像: @interface Member : DBObject @property (strong) NSString* firstname; @property (strong) NSString* lastName; @end @interface Group : DBObject @property (strong) NSString* groupName; @property (strong) NSString* adminName; @property (strong) Member* members; @end 对于这个组,它有 4 个成员,而不是如何将所有组成员和组详细信息存储在一个对象中,以及如何检索它们? 广告中的感谢。 回答1 为了回答这个问题,我重新建模并在下面提供了一个示例,说明如何在这两个对象之间创建一对一的关系。 这个问题源于这样一个事实,即在 Objective-c 中没有类型化数组这样的东西。 如果有,我们将研究重新实现接口的工作方式。 我已经将 Group 对象移动到成员中,因为成员属于一个组,然后向 Group 对象添加了一个 members 方法以向后查看子对象。 @interface Member
  • Java JDBC DataSource Deployment for MySQL
    I'm trying to learn how to use JDBC and in the Java Tutorial on JDBC (https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html), it says the system admin needs to create a BasicDataSource Object, set its properties, and Registering the DataSource object with a naming service using the following code: com.dbaccess.BasicDataSource ds = new com.dbaccess.BasicDataSource(); ds.setServerName("grinder"); ds.setDatabaseName("CUSTOMER_ACCOUNTS"); ds.setDescription("Customer accounts database for billing"); Context ctx = new InitialContext(); ctx.bind("jdbc/billingDB", ds); and then the
  • DBAccess:long long 值是否支持?(DBAccess: long long value supprted or not?)
    问题 我正在为我的项目使用 dbaccess。 我想知道,dbaccess 是否支持 long long 值? If I stored date timestamp 745665352687 than if I retrieved it, it returns -1572180756. 我知道 sqlite 支持 long long 值,但不知道 dbaccess。 谁能帮我? 广告中的感谢。 回答1 是的,long long 是受支持的类型之一。 我已经调查过这个问题,所有版本都应该适用于你上面的例子。 我创建了一个类并分配了您的示例值。 @interface Test : DBObject @property long long value; @end 输出: ------------------------------------------------------------------------------------------- | Entity : Test Primary Key : Id Value: 1.000000 | ------------------------------------------------------------------------------------------- | Field Name | Type | Value
  • DataReader 不兼容(The DataReader Is Incompatible)
    问题
  • MySQL 的 Java JDBC 数据源部署(Java JDBC DataSource Deployment for MySQL)
    问题
  • 使用 SQLite 为 POJO 创建 DAO 的更好模式(Better pattern to handle DAO creation for POJO using SQLite)
    问题 我正在开发一个 Android 应用程序,该应用程序使用SQLCipher 、 ORMLite for Android来处理使用 SQLite 和Jackson存储的 POJO 以进行解析。 我想知道是否会有更好的模式,我正在使用的模式(由stayforit 推荐)来获取与给定的实体类对应的 DAO。 我有超过 30 个实体类,并且随着时间的推移不断添加一些实体类,每次我都必须创建一个与前一个类完全相同的 DAO 类。 我如何使用泛型类进行概括? 这是我的 DbManager 类: public class DbManager { private static DbManager instance; private CipherDbHelper dbHelper; private SecureSharedPreferences settings; private DbManager() { } private DbManager(Context context, String password) { SQLiteDatabase.loadLibs(context); dbHelper = new CipherDbHelper(context, password); } public static void init(Context context, String
  • Error on creating connection to PDO in PHP
    Today, I removed and reinstalled the latest version of lampp in order to move to php 5.30, and suddenly a very simple app is failing to connect to the mysql database. I'm using PDO to connect, and receiving the following error: Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect via unix://) in /home/raistlin/www/todoapp/home.php on line 9 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0 /home/raistlin/www/todoapp/home.php(9): PDO->__construct(
  • Invalid packaging for parent pom.xml, must be “pom” but is “ear”
    Could anybody suggest me an solution with the following exception. I am going to create a multi-module project. Parent Project name is LOGICBACKEND child project name is DBAccess I need to have ear file of LOGICBACKEND which should contain DBAccess prjoects jar file. I am getting following exception when i run mav clean install -P Developer. [ERROR]The project com.project1.Database:DBAccess:1.0-SNAPSHOT (C:\Project1\DBAccess\pom.xml) has 1 error [ERROR]Invalid packaging for parent POM com.project1.logic:LOGIC:1.0-SNAPSHOT (C:\Project1\pom.xml), must be "pom" but is "ear" @ com.project1.logic
  • 在PHP中创建与PDO的连接时出错(Error on creating connection to PDO in PHP)
    问题 今天,我删除并重新安装了Lampp的最新版本,以转到php 5.30,突然之间,一个非常简单的应用程序无法连接到mysql数据库。 我正在使用PDO进行连接,并收到以下错误: Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect via unix://) in /home/raistlin/www/todoapp/home.php on line 9 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Invalid argument' in /home/raistlin/www/todoapp/home.php:9 Stack trace: #0 /home/raistlin/www/todoapp/home.php(9): PDO->__construct('mysql:host=loca...', 'USER', 'PASSWORD') #1 {main} thrown in /home/raistlin/www/todoapp/home.php on line 9 为了调试它,此刻我没有捕获到该错误。
  • Proguard 回溯丢失的行号(Proguard retrace missing line numbers)
    问题
  • 业务逻辑层(Business Logic Layer)
    问题 我正在使用带有 Telerik 控件的 asp.net 编程数据驱动的应用程序(v2009 q2)。 我有一个名为 BLL 的类,它包含(几乎只有)静态类,这些类返回以某些 id 作为参数的不同对象。 通常将对象组返回为列表。 我的问题是这是否有任何架构缺陷,总是使用静态。 我知道人们将他们的业务层和数据访问层作为不同的项目。 作为一个项目有什么好处? 所以我可以添加更多功能,或者只是这样更整洁。 提前致谢 回答1 使用静态方法作为您的进入方法并不是一个特别大的问题。 这实际上取决于您是否有需要存储状态的工作领域,因为静态定义可能不允许您存储或分离状态信息。 幸运的是,从使用静态声明向后使用成员声明通常比反向使用更容易。 如果从这些方法返回的项目完全负责状态,您甚至可能不会遇到这个问题。 单独的库/项目对于划分工作单元很有用。 正如 Dave Swersky 所提到的,虽然您可能会看到静态成员变量的怪癖,尤其是在多线程应用程序中,但没有严格要求所有内容都必须分离到不同的库中。 拥有单独的库还为您带来以下好处: 在开发过程中更好地分离变更,因为项目边界通常与源代码控制边界重合,允许更多的人在平台的整个表面上同时工作。 可以在生产中独立更新的单独部件,前提是布局和界面兼容。 更好地组织在每一层(无论是 BLL 还是 DAL)的给定段的哪些行为、特征和角色相交。
  • DBAccess.pas 中的断言失败(Assertion failure in DBAccess.pas)
    问题
  • Linux: fast creating of formatted output file (csv) from find command
    I have several devices, which I want to collect in a list (csv) to put them into a mysql database. I began with a device with the goal to create a new formatted output file, from infile file which was created with 'find'. The device is /mnt/sda4 and I have skipped all entries containing '.cache'. I also have already cut /mnt/sda4/: find /mnt/sda4 | grep -v '.cache' | cut -d'/' -f4- > infile where the infile is like that: Extern-500GB-btrfs/root/usr/lib64/libreoffice/share/config/soffice.cfg/dbaccess/ui/mysqlnativesettings.ui Extern-500GB-btrfs/root/usr/lib64/libreoffice/share/config/soffice
  • Java Access DB Connection
    I try to make project with connection to db (MS Access 2010) I use this tutorial on CodeProject. import java.sql.*; public class DbAccess { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;"; Connection conn = DriverManager.getConnection(database, "", ""); Statement s = conn.createStatement(); // create a table String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0)); String createTable = "CREATE TABLE " + tableName + " (id Integer, name Text(32))"
  • Linux:从 find 命令快速创建格式化输出文件 (csv)(Linux: fast creating of formatted output file (csv) from find command)
    问题 我有几个设备,我想将它们收集在一个列表 (csv) 中以将它们放入 mysql 数据库中。 我从一个设备开始,目标是从使用“查找”创建的 infile 文件创建一个新的格式化输出文件。 设备是/mnt/sda4,我跳过了所有包含“.cache”的条目。 我也已经剪掉了/mnt/sda4/ : find /mnt/sda4 | grep -v '.cache' | cut -d'/' -f4- > infile infile 是这样的: Extern-500GB-btrfs/root/usr/lib64/libreoffice/share/config/soffice.cfg/dbaccess/ui/mysqlnativesettings.ui Extern-500GB-btrfs/root/usr/lib64/libreoffice/share/config/soffice.cfg/dbaccess/ui/namematchingpage.ui ... 这部分非常快。 real 0m1,432s user 0m1,079s sys 0m0,873s 现在,我有两个解决方案,都(非常)慢,我想有一个新的输出列表,其中包含处理过的每一行的以下内容; “06;” basename ";/" 整行处理,如下所示: 06;mysqlnativesettings.ui;/Extern