是否可以让非主键在每次插入时自动递增?
例如,我想要一个日志,其中每个日志条目都有一个主键(供内部使用)和一个修订号(我希望自动递增的INT值).
作为一种解决方法,这可以通过序列完成,但我相信SQLite不支持序列.
我尝试使用以下内容删除列
openDB.execSQL("ALTER TABLE favs" + " DROP COLUMN favsCount");
Run Code Online (Sandbox Code Playgroud)
LogCat给出以下消息:
11-07 21:18:29.238:错误/数据库(13952):当准备'ALTER TABLE favs DROP COLUMN favsCount'时,0x34e550上的失败1(接近"DROP":语法错误).
是不是可以在Android的sqlite中删除字段?
我正在尝试使用EF动态创建嵌入式SQLite数据库但是,我无法使其工作,数据库文件永远不会被创建.
我有EF 4.2和最新版本的SQLite
这就是我所拥有的
的app.config
<?xml version="1.0"?>
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider"
invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="DataContext"
connectionString="Data Source=test.db;Version=3;New=True;"
providerName="System.Data.SQLite" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
数据库初始化程序(放入一些内容)
class PageDbInitializer : DropCreateDatabaseAlways<PageDB>
{
protected override void Seed(PageDB context)
{
for (int i = 0; i < 10; i++)
{
WebPage page = new WebPage() { Name = "Page" + (i + 1) };
context.Pages.Add(page);
}
base.Seed(context); …Run Code Online (Sandbox Code Playgroud) 我正在使用SQLite和phonegap来创建一个多平台应用程序.但是,我遇到了一个问题.
现在我正在寻找的位置PhoneGap的存储数据库文件命名0000000000000001.db和database.db
我已经为iPhone找到了这个,但似乎无法获得Android的位置.我目前正在运行模拟器和实际设备(ARCHOS).
当我使用带有SQLite数据库引擎的数值列时,SQLalchemy会给出以下警告.
SAWarning:Dialect sqlite + pysqlite本身不支持Decimal对象
我正在尝试找出pkgPrice = Column(Numeric(12,2))在SQLalchemy中使用SQLite时最好的方法.
这个问题[1] 如何将Python十进制转换为SQLite数字?显示了一种使用sqlite3.register_adapter(D, adapt_decimal)SQLite接收和返回Decimal的方法,但存储了Strings,但我不知道如何深入研究SQLAlchemy核心来做到这一点.类型装饰器看起来是正确的方法,但我还没有搞定它们.
有没有人在SQLAlchemy模型中有一个SQLAlchemy Type装饰器配方,它将具有数字或十进制数字,但是在SQLite中将它们存储为字符串?
这两种方法有什么区别?对我来说,似乎SQLiteDatabase的唯一好处是它能够使用不同的数据库.我对吗?
在测试我的Android 5.0兼容应用程序时,我发现了这一点 一 我的两个SQL查询 不在棒棒糖上不再按预期工作了.与旧的Android版本相比,我的两个问题导致Lollipop的结果显着不同.
下面,我将更深入地描述这些问题及其解决方案,以防您遇到类似问题.
我的主要问题很简单:这些非向后兼容的变更是否记录在案?
似乎以下查询在Lollipop上不再起作用:
SELECT title FROM ents JOIN ctt ON ctt.docid = ents.cttId WHERE (ctt MATCH '*ads*');
Run Code Online (Sandbox Code Playgroud)
它不再返回任何结果,在它之前的Lollipop上(当然使用相同的数据库和相同的数据).
例如,如本问题所述,MATCH仅匹配字符串前缀.事实确实如此,搜索词前面的'*'在Android <5.0时被忽略了.
然而,Lollipop的SQLite不喜欢第一个'*',并且不会为此查询返回任何内容.我不得不将查询更改为以下内容以使其再次起作用:
SELECT title FROM ents JOIN ctt ON ctt.docid = ents.cttId WHERE (ctt MATCH 'ads*');
Run Code Online (Sandbox Code Playgroud)
(我使用FTS3进行全文搜索.)
简短的故事: GROUPing BY由原始名称引用的别名列与ORDER BY一起使用特定于Android的"COLLATE LOCALIZED"会在Lollipop上引发错误,但适用于以前的版本.WTF!?:-)
很长的故事:
故事开始于一个非常大的自动生成的查询,因此我修改,简化并缩短了导致问题的部分.我知道查询没有多大意义,如下所示,但它证明了问题.
SELECT
inner.title AS title,
ltrim(inner.title, '*') AS title2
FROM
(SELECT types.text AS title FROM types) AS inner
GROUP BY inner.title
UNION SELECT
inner.title AS title,
ltrim(inner.title, …Run Code Online (Sandbox Code Playgroud) 我现在已经在VS 2017中的Core控制台应用程序和标准.NET Framework MVC应用程序中注意到了这一点.它被命名<solution-name>.sqlite,并具有以下表格:
FileScannerCache
FileSystemData
FileSystemEntity
FileSystemReference
ProviderEntity
Setting
SymbolDefinition
Run Code Online (Sandbox Code Playgroud)
它似乎包含MSBuild相关数据,但是当我查询一些表时,就像
select * from FileScannerCache
Run Code Online (Sandbox Code Playgroud)
我收到了错误System.FormatException: String was not recognised as a valid DateTime.我正在使用Sqlite/SQL Server Compact Toolbox来检查和查询此数据库.
sqlite projects-and-solutions visual-studio visual-studio-2017
我需要帮助我的考试项目找到ROOM数据库的差异和好处:我试图在android开发文档中搜索以了解这两个数据库之间的区别,但我无法清楚地理解.我也没有在堆栈溢出中找到任何答案.我还想知道使用Room持久性与SQLite数据库相比的好处.
希望有人能给我明确答案.
sqlite ×10
android ×5
database ×2
sql ×2
android-room ×1
c# ×1
cordova ×1
decimal ×1
median ×1
sqlalchemy ×1