标签: sqlite

SQLite数据类型

我通过Zentus在Java应用程序中使用SQLite.在这种情况下,我需要在我的数据库中保存和查询Java 值.来自其他RDBMS我创建了如下表来存储长值:long

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)

此解决方案产生例外行为,但在阅读关于数据类型SQLite文档后,我理解我的LONG类型与使用TEXT=> 相同的效果longValue存储为文本.

然后,我决定将其更改为INTEGER(长度是可变的,并且可以存储多达64位的整数,这是Java长度的长度),以便拥有更清晰的代码,可能是为了节省一些磁盘空间并提高性能,因为我的longValues是插入和查询为long.

在比较创建的数据库的性能和大小后,我无法看到以下任何区别:

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
Run Code Online (Sandbox Code Playgroud)

有关该主题的任何评论,经验或感受?

java sqlite

18
推荐指数
3
解决办法
1万
查看次数

android sqlite双向同步sqlite

我需要将我的Android SQLite数据库与我的云服务器数据库同步,并在多用户环境中以双向方式进行.

我在这里找到并介绍了解决方案,但我想了解更好的解决方案/算法.

database sqlite android data-synchronization

18
推荐指数
2
解决办法
1万
查看次数

表上的SQLite多主键,其中之一是自动增量

我在表上有多个(复合)主键,其中一个将自动递增.然而,有趣的是,SQLite允许AUTOINCREMENT在强制性PRIMARY KEY关键字之后使用关键字.

我的查询是:

CREATE TABLE ticket (
     id INTEGER PRIMARY KEY AUTOINCREMENT,
     seat TEXT, payment INTEGER,
     PRIMARY KEY (id, seat))
Run Code Online (Sandbox Code Playgroud)

但是错误是table "ticket" has more than one primary key.

实际上我可以避免使用此表的其他主键.但是我正在编写一个ORM框架(地狱是的,我很疯狂)并且不想改变PRIMARY KEY表的约束生成结构(因为它在MySQL afaik中是允许的).

对此有何解决方案?

sql sqlite

18
推荐指数
2
解决办法
2万
查看次数

Django创建的sqlite数据库文件在哪里?

我已经安装了python并且它包含了sqlite ...但是在哪里创建的sqlite db文件路径manage.py syncdb?我在Mac上.

python sqlite django macos

18
推荐指数
1
解决办法
2万
查看次数

Eclipse中是否有SQLite数据库查看器工具?

我正在使用Eclipse进行Android编程.是否有用于在模拟器中查看SQLite数据库的工具?

sqlite android

18
推荐指数
2
解决办法
3万
查看次数

JSON文件VS SQLite android

我将开发一个包含大量数据的android应用程序(带有一些行的json文件和带有大量行的图形数据的CSV),此数据每5分钟更改一次并替换所有以前的数据(或大多数).

设计这个的最佳方法是什么?我有2个选择:

  • 将所有数据保存在sqlite数据库中,并通过IntentService进行同步.

  • 将数据保存在json和csv文件中,每5分钟更换一次.

哪种方法会有最佳表现?这考虑了解析文件,排序数据,下载时间和数据一致性的时间.

还有其他想法吗?

PD:我也需要一个缓存系统,如果我没有互联网,我需要以前存储的数据

csv sqlite performance android json

18
推荐指数
3
解决办法
2万
查看次数

如何检查Python中是否存在SQLite3数据库?

我试图在Python 2.7.3中创建一个函数来打开SQLite数据库.

这是我目前的代码:

import sqlite3 as lite
import sys

db = r'someDb.sqlite'

def opendb(db):
    try:
        conn = lite.connect(db)
    except sqlite3.Error:
        print "Error open db.\n"
        return False
    cur = conn.cursor()
    return [conn, cur]
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上面的代码,并且我观察到该sqlite3库打开了声明的数据库(如果存在),或者如果此数据库不存在则创建新数据库.

有没有办法检查数据库是否存在sqlite3方法,还是我必须使用文件操作os.path.isfile(path)

python sqlite python-2.7

18
推荐指数
3
解决办法
3万
查看次数

Chrome中的加密Cookie

我目前正在开发一个C#表单应用程序,需要访问我的计算机上的特定cookie,我可以做得非常好.这是问题所在:

Google将SQL存储在SQLite中,我已下载Sqlite数据库浏览器以帮助我查看这些值.令我惊讶的是,大约一半的cookie值显示为空(包括我需要的那个),即使它们显然不是.

db文件位于:

C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cookies
Run Code Online (Sandbox Code Playgroud)

在Chrome上我有一个名为"编辑此Cookie"的插件,它允许我直接修改我所在网站上的Cookie.这个插件可以读取这些cookie,并且Web浏览器可以在需要时通过HTTP解析不同的请求,因此它们肯定存在 - 仍然,SQLite浏览器和我的自定义代码都得出结论,特定值字段为空.

这是为什么?是什么以某种方式阻止某些应用程序读取该字段?

sqlite cookies google-chrome

18
推荐指数
3
解决办法
3万
查看次数

如何使用Android Room Persistence Library将Column注释为NOT NULL

我的数据类看起来像这样

@Entity(tableName = "items")
data class Item(
        @ColumnInfo(name = "name") var name: String = "",
        @ColumnInfo(name = "room") var room: String = "",
        @ColumnInfo(name = "quantity") var quantity: String = "",
        @ColumnInfo(name = "description") var description: String = "",
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "id") var id: Long = 0
)
Run Code Online (Sandbox Code Playgroud)

Room使用SQLite和SQLite支持其数据库中的NOT NULL列.我尝试用@NonNull注释列,但它没有效果.

有没有办法让房间数据库中的列不可为空?

sqlite android kotlin android-room

18
推荐指数
5
解决办法
2万
查看次数

Sqlite DB锁定在Azure Dotnet核心实体框架上

我有一个简单的asp.net核心Web应用程序(v2.1),我在Linux上部署到B1(我试过B2)Azure App Service.当我调用时dbContext.SaveChanges(),在添加一个非常简单的实体之后,请求大约需要30秒才会抛出以下错误:

Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.

这是代码._dbContext注入了作用域生存期.

public async Task<IActionResult> SignIn([Bind("Email,Password,RedirectUrl")] SignInModel model) {
    if (ModelState.IsValid) {
        var user = _dbContext.Users.Include(u => u.Claims).FirstOrDefault(u => u.UserName == model.Email);

        ...

        user.LastLogin = DateTimeOffset.Now;
        await _dbContext.SaveChangesAsync();

        ...

        return Redirect(String.IsNullOrWhiteSpace(model.RedirectUrl) ? "/" : model.RedirectUrl); 
    }
    else {
        return View(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

在30秒内,我通过SSH看到SQLite DB文件旁边存在日志文件.它最终被删除了.

更新:这是日志.您可以看到,在单次更新调用之后,将在30秒后抛出锁定异常.30秒是SQL命令超时.我正在使用远程SSH shell观察文件系统,日志文件在那里持续约30秒.这就像应用服务使用的网络共享和SQLite文件锁定逻辑的组合被破坏或非常慢.

2018-12-20T15:06:27.660624755Z [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
2018-12-20T15:06:27.660656156Z       Request starting HTTP/1.1 POST http://insecuresite.azurewebsites.net/Account/SignIn application/x-www-form-urlencoded 56
2018-12-20T15:06:27.660797960Z [15:06:27 DBG] InsecureSite.Middleware.MyCookieAuthHandler:Constructor called.
2018-12-20T15:06:27.660875561Z [15:06:27 DBG] InsecureSite.Middleware.MyCookieAuthHandler:Constructor called.
2018-12-20T15:06:27.660885462Z …
Run Code Online (Sandbox Code Playgroud)

linux sqlite azure docker entity-framework-core

18
推荐指数
1
解决办法
722
查看次数