我有一个使用本地sqlite数据库的Android应用程序.
private SQLiteDatabase mDb;
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,我根据需要将我的Cursor放在pid等于id的行上:
mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID},
KEY_PID+" = "+id, null, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
当我运行以下查询,旨在获得相同的结果集,由pid命令我得到" android.database.sqlite.SQLiteException:datatype mismatch "
mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID},
KEY_PID+" = "+id, null, null, null, null, KEY_PID+" DESC");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我已经发现无法在.apk中捆绑文件并将它们放在/ sdcard上,目前为止最好的选择是在首次运行时下载大文件.我来了一个教程,说如何将一个sqlite数据库与apk捆绑在一起然后复制它,以便可以使用SQLiteDatabase访问它(因此需要的空间加倍,而根本不使用/ sdcard).
http://developer.android.com/guide/topics/data/data-storage.html#db表示所有数据库必须位于/ data/data/package_name/databases中.
真的是这样吗?有没有办法欺骗框架打开放在/ sdcard分区上的数据库?有没有办法使用另一个SQLite java包装器/框架来访问这些数据库?
如果上述答案为"否",我还有其他选择吗?我的数据在关系模型中有很好的表现,但是太大了,而且,我希望能够更新它而无需重新安装/升级整个应用程序.
我收到错误:
Error "ActiveRecord::ConnectionTimeoutError - could not obtain a database connection within 5 seconds. The max pool size is currently 5; consider increasing it."
Run Code Online (Sandbox Code Playgroud)
如何增加最大池大小?
# DB CONNECTION
DB_CONN = ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => DB_FILE)
Run Code Online (Sandbox Code Playgroud) 这是一个奇怪的:
我可以NOT NULLS从SQLite 过滤,但不能NULLS:
这有效:
SELECT * FROM project WHERE parent_id NOT NULL;
Run Code Online (Sandbox Code Playgroud)
这些不是:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
Run Code Online (Sandbox Code Playgroud)
全部回报:
您的查询语法存在问题(查询未执行)...
更新:
我正在使用PHP-通过我的代码使用ezSQl并使用PHPLiteAdmin接口
使用PHPLiteAdmin演示,这个表达式有效 - 所以现在我怀疑我的PHP的SQLite存在版本问题?可能是吗?这个表达式总是有效吗?
更新2:
当我使用ezSQL从PHP运行代码时,PHP警告是:
PHP警告:SQL逻辑错误或缺少数据库
有没有办法从PHP获取更多信息?这是令人发狂的不透明和奇怪的,特别是因为CLI中的相同声明工作正常...
更新3
我唯一的其他可能线索是我用PHP创建的数据库不能被CLI读取,反之亦然.我明白了:
错误:文件已加密或不是数据库
因此,肯定会有两种SQlite口味.(见这个)仍然,为什么无效的声明?
更新4
好吧我想我已经将问题追溯到罪魁祸首,如果不是原因 - 我用PHP ezSQL创建的数据库是IS NULL语句失败的数据库.如果我使用PHP的SQLite3类创建数据库,该语句可以正常工作,而且,我可以从CLI访问数据库,而ezSQL创建的数据库给出了file is encrypted错误.
所以我对ezSQL代码进行了一些挖掘 - 关闭了我看到它使用PDO方法,而不是更新的SQLite3类.也许那就是 - 我不会再浪费时间了......
无论如何,我找到了我的解决方案,即避开ezSQL,只使用PHPs SQLite3类.
我有一个sqlite数据库,它将从一个带有初始1000记录的web服务中填充,然后我将在每次需要时插入更多记录.我的问题是在哪里将sqlite数据库存储在设备中以便继续插入(在内部或外部存储器中),即如果我将数据库存储在内部存储器中并且当内部存储器被填充时我可以将其移动到外部并继续插入或者 如果我将它存储在外部存储器中并且外部存储器被填满并且内部有可用空间我可以移动到内部并继续插入数据..我很困惑这可以帮助我任何建议或链接请
我尝试在android中运行以下原始查询,似乎不起作用
String query ="SELECT DISTINCT category FROM event";
Cursor cursor = mDb.rawQuery(query, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
Run Code Online (Sandbox Code Playgroud)
所以我决定在android中使用query()方法
Cursor mCursor = mDb.query(EVENT_TABLE, new String[] {KEY_ROWID, KEY_CAT}, null, null,null,null, null)
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何选择使用query()而不是rawquery的不同类别,任何帮助将不胜感激!
我有一个sqlite3数据库.一列有TEXT类型,并包含我想保存为文件的blob.这些是gzip压缩文件.
该命令的输出sqlite3 db.sqlite3 ".dump" 是:
INSERT INTO "data" VALUES(1,'objects','object0.gz',X'1F8B080000000000000 [.. a few thousands of hexadecimal characters ..] F3F5EF')
如何使用命令行将sqlite文件中的二进制数据提取到文件中?
我正在关注初学者教程sqlite3.第一步是创建一个新数据库.所以我输入一个名字(movies.db).
我期待sqlite>在下一行得到另一个提示,并继续学习本教程,但我得到一个跛脚,...>之后我可以输入任何我想要的乱码.显然,这并不好.
我的命令提示符是什么样的:
SQLite version 3.8.1 2013-10-17 12:57:35
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> $ sqlite3 movies.db
...> gibberish
...> dsds
...> sdada
...> gfgys
...> a
...> Aaaaarrrgh!
...>
Run Code Online (Sandbox Code Playgroud)
如何让sqlite3为我正常工作?
请原谅我的新手.我希望我能以一种可能有助于其他新手的方式来表达这个问题.
我已经下载了一些数据作为sqlite数据库(data.db),我想在python中打开这个数据库,然后将其转换为pandas数据帧.
到目前为止,我已经做到了
import sqlite3
import pandas
dat = sqlite3.connect('data.db') #connected to database with out error
pandas.DataFrame.from_records(dat, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)
Run Code Online (Sandbox Code Playgroud)
但它抛出这个错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 980, in from_records
coerce_float=coerce_float)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 5353, in _to_arrays
if not len(data):
TypeError: object of type 'sqlite3.Connection' has no len()
Run Code Online (Sandbox Code Playgroud)
如何将sqlite数据库转换为pandas数据帧
我正在尝试使用新的Android Persistence Room Library在两个数据库表之间创建关系.我查看了文档,并尝试实现https://developer.android.com/reference/android/arch/persistence/room/Relation.html上的示例:
@Entity
public class User {
@PrimaryKey
int id;
}
@Entity
public class Pet {
@PrimaryKey
int id;
int userId;
String name;
}
@Dao
public interface UserDao {
@Query("SELECT * from User")
public List<User> loadUser();
}
@Dao
public interface PetDao {
@Query("SELECT * from Pet")
public List<Pet> loadUserAndPets();
}
public class UserAllPets {
@Embedded
public User user;
@Relation(parentColumn = "user.id", entityColumn = "userId", entity = Pet.class)
public List pets;
}
@Dao
public interface UserPetDao { …Run Code Online (Sandbox Code Playgroud) sqlite ×10
android ×5
database ×2
activerecord ×1
android-architecture-components ×1
android-room ×1
blob ×1
dataframe ×1
download ×1
ezsql ×1
pandas ×1
python ×1
ruby ×1